lkml.org 
[lkml]   [2018]   [Jan]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL for 4.9 38/55] fs/mbcache.c: make count_objects() more robust
    Date
    From: Jiang Biao <jiang.biao2@zte.com.cn>

    [ Upstream commit d5dabd633922ac5ee5bcc67748f7defb8b211469 ]

    When running ltp stress test for 7*24 hours, vmscan occasionally emits
    the following warning continuously:

    mb_cache_scan+0x0/0x3f0 negative objects to delete
    nr=-9232265467809300450
    ...

    Tracing shows the freeable(mb_cache_count returns) is -1, which causes
    the continuous accumulation and overflow of total_scan.

    This patch makes sure that mb_cache_count() cannot return a negative
    value, which makes the mbcache shrinker more robust.

    Link: http://lkml.kernel.org/r/1511753419-52328-1-git-send-email-jiang.biao2@zte.com.cn
    Signed-off-by: Jiang Biao <jiang.biao2@zte.com.cn>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Cc: Minchan Kim <minchan@kernel.org>
    Cc: Michal Hocko <mhocko@kernel.org>
    Cc: <zhong.weidong@zte.com.cn>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    ---
    fs/mbcache.c | 3 +++
    1 file changed, 3 insertions(+)

    diff --git a/fs/mbcache.c b/fs/mbcache.c
    index c5bd19ffa326..35ab4187bfe1 100644
    --- a/fs/mbcache.c
    +++ b/fs/mbcache.c
    @@ -269,6 +269,9 @@ static unsigned long mb_cache_count(struct shrinker *shrink,
    struct mb_cache *cache = container_of(shrink, struct mb_cache,
    c_shrink);

    + /* Unlikely, but not impossible */
    + if (unlikely(cache->c_entry_count < 0))
    + return 0;
    return cache->c_entry_count;
    }

    --
    2.11.0
    \
     
     \ /
      Last update: 2018-01-24 05:19    [W:4.996 / U:0.196 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site