From: Danny Al-Gaaf Date: Fri, 31 May 2013 16:39:43 +0000 (+0200) Subject: mds/Locker.cc: fix dereference after null check X-Git-Tag: v0.65~168^2~12 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=bb8798e320dc892a8bedf9d9c58393fe13c21ad2;p=ceph.git mds/Locker.cc: fix dereference after null check CID 716917 (#1 of 1): Dereference after null check (FORWARD_NULL) var_deref_model: Passing null pointer "in" to function "MDSCacheObject::state_test(unsigned int) const", which dereferences it. Add assert for in == NULL before using it. Signed-off-by: Danny Al-Gaaf --- diff --git a/src/mds/Locker.cc b/src/mds/Locker.cc index 127db262b462..5cf8ac8ad3dd 100644 --- a/src/mds/Locker.cc +++ b/src/mds/Locker.cc @@ -3602,11 +3602,13 @@ void Locker::simple_lock(SimpleLock *lock, bool *need_issue) } } - if (lock->get_type() == CEPH_LOCK_IFILE && - in->state_test(CInode::STATE_NEEDSRECOVER)) { - mds->mdcache->queue_file_recover(in); - mds->mdcache->do_file_recover(); - gather++; + if (lock->get_type() == CEPH_LOCK_IFILE) { + assert(in); + if(in->state_test(CInode::STATE_NEEDSRECOVER)) { + mds->mdcache->queue_file_recover(in); + mds->mdcache->do_file_recover(); + gather++; + } } if (lock->get_parent()->is_replicated() &&