lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Mon, 23 Nov 2020 13:23:03 +0100 From: Greg Kroah-Hartman <gregkh@...uxfoundation.org> To: linux-kernel@...r.kernel.org Cc: Greg Kroah-Hartman <gregkh@...uxfoundation.org>, stable@...r.kernel.org, Muchun Song <songmuchun@...edance.com>, Andrew Morton <akpm@...ux-foundation.org>, Shakeel Butt <shakeelb@...gle.com>, Roman Gushchin <guro@...com>, Johannes Weiner <hannes@...xchg.org>, David Rientjes <rientjes@...gle.com>, Michal Hocko <mhocko@...nel.org>, Vladimir Davydov <vdavydov.dev@...il.com>, Christopher Lameter <cl@...ux.com>, Pekka Enberg <penberg@...nel.org>, Joonsoo Kim <iamjoonsoo.kim@....com>, Vlastimil Babka <vbabka@...e.cz>, Yafang Shao <laoar.shao@...il.com>, Chris Down <chris@...isdown.name>, Linus Torvalds <torvalds@...ux-foundation.org> Subject: [PATCH 5.4 155/158] mm: memcg/slab: fix root memcg vmstats From: Muchun Song <songmuchun@...edance.com> commit 8faeb1ffd79593c9cd8a2a80ecdda371e3b826cb upstream. If we reparent the slab objects to the root memcg, when we free the slab object, we need to update the per-memcg vmstats to keep it correct for the root memcg. Now this at least affects the vmstat of NR_KERNEL_STACK_KB for !CONFIG_VMAP_STACK when the thread stack size is smaller than the PAGE_SIZE. David said: "I assume that without this fix that the root memcg's vmstat would always be inflated if we reparented" Fixes: ec9f02384f60 ("mm: workingset: fix vmstat counters for shadow nodes") Signed-off-by: Muchun Song <songmuchun@...edance.com> Signed-off-by: Andrew Morton <akpm@...ux-foundation.org> Reviewed-by: Shakeel Butt <shakeelb@...gle.com> Acked-by: Roman Gushchin <guro@...com> Acked-by: Johannes Weiner <hannes@...xchg.org> Acked-by: David Rientjes <rientjes@...gle.com> Cc: Michal Hocko <mhocko@...nel.org> Cc: Vladimir Davydov <vdavydov.dev@...il.com> Cc: Christopher Lameter <cl@...ux.com> Cc: Pekka Enberg <penberg@...nel.org> Cc: Joonsoo Kim <iamjoonsoo.kim@....com> Cc: Roman Gushchin <guro@...com> Cc: Vlastimil Babka <vbabka@...e.cz> Cc: Yafang Shao <laoar.shao@...il.com> Cc: Chris Down <chris@...isdown.name> Cc: <stable@...r.kernel.org> [5.3+] Link: https://lkml.kernel.org/r/20201110031015.15715-1-songmuchun@bytedance.com Signed-off-by: Linus Torvalds <torvalds@...ux-foundation.org> Signed-off-by: Greg Kroah-Hartman <gregkh@...uxfoundation.org> --- mm/memcontrol.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -776,8 +776,13 @@ void __mod_lruvec_slab_state(void *p, en rcu_read_lock(); memcg = memcg_from_slab_page(page); - /* Untracked pages have no memcg, no lruvec. Update only the node */ - if (!memcg || memcg == root_mem_cgroup) { + /* + * Untracked pages have no memcg, no lruvec. Update only the + * node. If we reparent the slab objects to the root memcg, + * when we free the slab object, we need to update the per-memcg + * vmstats to keep it correct for the root memcg. + */ + if (!memcg) { __mod_node_page_state(pgdat, idx, val); } else { lruvec = mem_cgroup_lruvec(pgdat, memcg);
Powered by blists - more mailing lists