]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
kclient: fix osdmap decoding
authorSage Weil <sage@newdream.net>
Fri, 8 Aug 2008 16:16:06 +0000 (09:16 -0700)
committerSage Weil <sage@newdream.net>
Fri, 8 Aug 2008 16:16:06 +0000 (09:16 -0700)
src/kernel/osdmap.c

index 260a0d4289d3bc378d93fcc9743a09e49678a1e6..ca8a08150a53af5c8e34fcb759c17c15ce522e45 100644 (file)
@@ -170,6 +170,8 @@ static struct crush_map *crush_decode(void **p, void *end)
                case CRUSH_BUCKET_STRAW:
                        size = sizeof(struct crush_bucket_straw);
                        break;
+               default:
+                       goto bad;
                }
                BUG_ON(size == 0);
                b = c->buckets[i] = kzalloc(size, GFP_NOFS);
@@ -375,6 +377,11 @@ struct ceph_osdmap *osdmap_decode(void **p, void *end)
                }
        }
 
+       /* ignore max_snap, removed_snaps */
+       *p += sizeof(u64);
+       ceph_decode_32_safe(p, end, len, bad);
+       *p += len * 2 * sizeof(u64);
+
        /* crush */
        ceph_decode_32_safe(p, end, len, bad);
        dout(30, "osdmap_decode crush len %d from off %x\n",