From: root Date: Fri, 1 Dec 2017 07:26:00 +0000 (+0800) Subject: cephfs: potential adjust failure in lru_expire X-Git-Tag: v13.0.2~754^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F19277%2Fhead;p=ceph.git cephfs: potential adjust failure in lru_expire Fix: the first adjust is no needed,it will never take real effect. the second 'adjust' may never get the chance to be executed suppose we can reach the second 'adjust', it will crash because the bottom list is empty now. Fixes: http://tracker.ceph.com/issues/22458 Signed-off-by: dongdong tao --- diff --git a/src/include/lru.h b/src/include/lru.h index d04e94f19a47..c52cb567bf15 100644 --- a/src/include/lru.h +++ b/src/include/lru.h @@ -157,6 +157,7 @@ public: // expire -- expire a single item LRUObject *lru_get_next_expire() { + adjust(); // look through tail of bot while (bottom.size()) { LRUObject *p = bottom.back(); @@ -164,7 +165,6 @@ public: // move to pintail pintail.push_front(&p->lru_link); - adjust(); } // ok, try head then @@ -174,7 +174,6 @@ public: // move to pintail pintail.push_front(&p->lru_link); - adjust(); } // no luck!