dout("monmap_decode %p %p len %d\n", p, end, (int)(end-p));
- ceph_decode_32_safe(&p, end, version, bad);
+ ceph_decode_16_safe(&p, end, version, bad);
- ceph_decode_need(&p, end, 2*sizeof(u32) + 2*sizeof(u64), bad);
+ ceph_decode_need(&p, end, sizeof(fsid) + 2*sizeof(u32), bad);
ceph_decode_copy(&p, &fsid, sizeof(fsid));
ceph_decode_32(&p, epoch);
+
ceph_decode_32(&p, num_mon);
ceph_decode_need(&p, end, num_mon*sizeof(m->mon_inst[0]), bad);
- /* The encoded and decoded sizes match. */
if (num_mon >= CEPH_MAX_MON)
goto bad;
m = kmalloc(sizeof(*m) + sizeof(m->mon_inst[0])*num_mon, GFP_NOFS);