lkml.org 
[lkml]   [2019]   [Dec]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.14 045/267] mm/vmstat.c: fix NUMA statistics updates
    Date
    From: Janne Huttunen <janne.huttunen@nokia.com>

    [ Upstream commit 13c9aaf7fa01cc7600c61981609feadeef3354ec ]

    Scan through the whole array to see if an update is needed. While we're
    at it, use sizeof() to be safe against any possible type changes in the
    future.

    The bug here is that we wouldn't sync per-cpu counters into global ones
    if there was an update of numa_stats for higher cpus. Highly
    theoretical one though because it is much more probable that zone_stats
    are updated so we would refresh anyway. So I wouldn't bother to mark
    this for stable, yet something nice to fix.

    [mhocko@suse.com: changelog enhancement]
    Link: http://lkml.kernel.org/r/1541601517-17282-1-git-send-email-janne.huttunen@nokia.com
    Fixes: 1d90ca897cb0 ("mm: update NUMA counter threshold size")
    Signed-off-by: Janne Huttunen <janne.huttunen@nokia.com>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    mm/vmstat.c | 7 ++++---
    1 file changed, 4 insertions(+), 3 deletions(-)

    diff --git a/mm/vmstat.c b/mm/vmstat.c
    index ba91683264134..e2197b03da574 100644
    --- a/mm/vmstat.c
    +++ b/mm/vmstat.c
    @@ -1805,12 +1805,13 @@ static bool need_update(int cpu)

    /*
    * The fast way of checking if there are any vmstat diffs.
    - * This works because the diffs are byte sized items.
    */
    - if (memchr_inv(p->vm_stat_diff, 0, NR_VM_ZONE_STAT_ITEMS))
    + if (memchr_inv(p->vm_stat_diff, 0, NR_VM_ZONE_STAT_ITEMS *
    + sizeof(p->vm_stat_diff[0])))
    return true;
    #ifdef CONFIG_NUMA
    - if (memchr_inv(p->vm_numa_stat_diff, 0, NR_VM_NUMA_STAT_ITEMS))
    + if (memchr_inv(p->vm_numa_stat_diff, 0, NR_VM_NUMA_STAT_ITEMS *
    + sizeof(p->vm_numa_stat_diff[0])))
    return true;
    #endif
    }
    --
    2.20.1


    \
     
     \ /
      Last update: 2019-12-16 18:52    [W:8.219 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site