X-Git-Url: https://git.karo-electronics.de/?a=blobdiff_plain;f=fs%2Fceph%2Fmdsmap.c;h=d4d38977dcbb0bf8e4cdaf2c0534f8a71c27c2c8;hb=c213b50b7dcbf06abcfbf1e4eee5b76586718bd9;hp=9278dec9e9400aa222c6e73fcaa144405644c056;hpb=ff9129b06cfb05cb5920f1151c75506afe1586fe;p=linux-beck.git diff --git a/fs/ceph/mdsmap.c b/fs/ceph/mdsmap.c index 9278dec9e940..d4d38977dcbb 100644 --- a/fs/ceph/mdsmap.c +++ b/fs/ceph/mdsmap.c @@ -138,6 +138,8 @@ struct ceph_mdsmap *ceph_mdsmap_decode(void **p, void *end) m->m_info[mds].export_targets = kcalloc(num_export_targets, sizeof(u32), GFP_NOFS); + if (m->m_info[mds].export_targets == NULL) + goto badmem; for (j = 0; j < num_export_targets; j++) m->m_info[mds].export_targets[j] = ceph_decode_32(&pexport_targets); @@ -170,7 +172,7 @@ bad: DUMP_PREFIX_OFFSET, 16, 1, start, end - start, true); ceph_mdsmap_destroy(m); - return ERR_PTR(-EINVAL); + return ERR_PTR(err); } void ceph_mdsmap_destroy(struct ceph_mdsmap *m)