]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
os/bluestore: nullptr in OmapIteratorImpl::valid
authorXinze Chi <xinze@xsky.com>
Thu, 12 Jan 2017 05:58:55 +0000 (13:58 +0800)
committerXinze Chi <xinze@xsky.com>
Thu, 12 Jan 2017 14:20:40 +0000 (22:20 +0800)
call stack:
SnapMapper::get_next_object_to_trim -> MapCacher::get_next ->
OSDriver::get_next-> BlueStore::OmapIteratorImpl::valid()

In OSDriver::get_next, it call iter->upper_bound(key); // this may reset it to nullptr

Signed-off-by: Xinze Chi <xinze@xsky.com>
src/os/bluestore/BlueStore.cc

index e8ff586e6c5336bd3aabd47623703f2355501805..7e9be7b76a3605312cbfafdf12b38a9d16330805 100644 (file)
@@ -5774,7 +5774,7 @@ int BlueStore::OmapIteratorImpl::lower_bound(const string& to)
 bool BlueStore::OmapIteratorImpl::valid()
 {
   RWLock::RLocker l(c->lock);
-  return o->onode.has_omap() && it->valid() && it->raw_key().second <= tail;
+  return o->onode.has_omap() && it && it->valid() && it->raw_key().second <= tail;
 }
 
 int BlueStore::OmapIteratorImpl::next(bool validate)