From 6b21e69a421c78b5f9d89142fffd2e0736ccc0f4 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Tue, 4 Oct 2016 12:52:27 -0400 Subject: [PATCH] os/bluestore: fix crash in decode_some() shared_blob must be non-null when we call Extent::assign_blob(). Signed-off-by: Sage Weil --- src/os/bluestore/BlueStore.cc | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/os/bluestore/BlueStore.cc b/src/os/bluestore/BlueStore.cc index 7c48cdc5d8f..1e963e3e523 100644 --- a/src/os/bluestore/BlueStore.cc +++ b/src/os/bluestore/BlueStore.cc @@ -1726,10 +1726,11 @@ void BlueStore::ExtentMap::decode_some(bufferlist& bl) le->assign_blob(blobs[blobid - 1]); assert(le->blob); } else { - le->assign_blob(new Blob()); - le->blob->decode(p); - blobs[n] = le->blob; - onode->c->open_shared_blob(le->blob); + Blob *b = new Blob(); + b->decode(p); + blobs[n] = b; + onode->c->open_shared_blob(b); + le->assign_blob(b); } // we build ref_map dynamically for non-spanning blobs le->blob->ref_map.get(le->blob_offset, le->length); -- 2.47.3