From: xie xingguo Date: Mon, 28 Mar 2016 12:08:53 +0000 (+0800) Subject: common: fix race during optracker switches between enabled/disabled mode X-Git-Tag: v10.1.1~61^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F8330%2Fhead;p=ceph.git common: fix race during optracker switches between enabled/disabled mode The RWLock lock is made private to protect tracking_enabled changing but we are reading tracking_enabled beyond its protection during unregister_inflight_op(). So this is a slight race conditon. Signed-off-by: xie xingguo --- diff --git a/src/common/TrackedOp.cc b/src/common/TrackedOp.cc index edea8476cb4a..2554c0921edd 100644 --- a/src/common/TrackedOp.cc +++ b/src/common/TrackedOp.cc @@ -164,6 +164,7 @@ void OpTracker::unregister_inflight_op(TrackedOp *i) } i->_unregistered(); + RWLock::RLocker l(lock); if (!tracking_enabled) delete i; else {