Browse Source

libceph: use alloc_pg_mapping() in __decode_pg_upmap_items()

... otherwise we die in insert_pg_mapping(), which wants pg->node to be
empty, i.e. initialized with RB_CLEAR_NODE.

Fixes: 6f428df47dae ("libceph: pg_upmap[_items] infrastructure")
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
Ilya Dryomov 8 năm trước cách đây
mục cha
commit
f5cc689865
1 tập tin đã thay đổi với 1 bổ sung1 xóa
  1. 1 1
      net/ceph/osdmap.c

+ 1 - 1
net/ceph/osdmap.c

@@ -1400,7 +1400,7 @@ static struct ceph_pg_mapping *__decode_pg_upmap_items(void **p, void *end,
 		return ERR_PTR(-EINVAL);
 		return ERR_PTR(-EINVAL);
 
 
 	ceph_decode_need(p, end, 2 * len * sizeof(u32), e_inval);
 	ceph_decode_need(p, end, 2 * len * sizeof(u32), e_inval);
-	pg = kzalloc(sizeof(*pg) + 2 * len * sizeof(u32), GFP_NOIO);
+	pg = alloc_pg_mapping(2 * len * sizeof(u32));
 	if (!pg)
 	if (!pg)
 		return ERR_PTR(-ENOMEM);
 		return ERR_PTR(-ENOMEM);