From: Xinze Chi Date: Thu, 12 Jan 2017 05:58:55 +0000 (+0800) Subject: os/bluestore: nullptr in OmapIteratorImpl::valid X-Git-Tag: v12.0.0~186^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F12900%2Fhead;p=ceph.git os/bluestore: nullptr in OmapIteratorImpl::valid 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 --- diff --git a/src/os/bluestore/BlueStore.cc b/src/os/bluestore/BlueStore.cc index e8ff586e6c53..7e9be7b76a36 100644 --- a/src/os/bluestore/BlueStore.cc +++ b/src/os/bluestore/BlueStore.cc @@ -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)