|
@@ -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)
|