]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blob
360b18fe34699c912d9f013399062732f034271f
[thirdparty/kernel/stable-queue.git] /
1 From d12f5cc12212b466bb5612e7a826a94bb12d1451 Mon Sep 17 00:00:00 2001
2 From: Sasha Levin <sashal@kernel.org>
3 Date: Sun, 1 Nov 2020 17:07:30 -0800
4 Subject: mm: memcontrol: correct the NR_ANON_THPS counter of hierarchical
5 memcg
6
7 From: zhongjiang-ali <zhongjiang-ali@linux.alibaba.com>
8
9 [ Upstream commit 7de2e9f195b9cb27583c5c64deaaf5e6afcc163e ]
10
11 memcg_page_state will get the specified number in hierarchical memcg, It
12 should multiply by HPAGE_PMD_NR rather than an page if the item is
13 NR_ANON_THPS.
14
15 [akpm@linux-foundation.org: fix printk warning]
16 [akpm@linux-foundation.org: use u64 cast, per Michal]
17
18 Fixes: 468c398233da ("mm: memcontrol: switch to native NR_ANON_THPS counter")
19 Signed-off-by: zhongjiang-ali <zhongjiang-ali@linux.alibaba.com>
20 Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
21 Acked-by: Johannes Weiner <hannes@cmpxchg.org>
22 Acked-by: Michal Hocko <mhocko@suse.com>
23 Link: https://lkml.kernel.org/r/1603722395-72443-1-git-send-email-zhongjiang-ali@linux.alibaba.com
24 Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
25 Signed-off-by: Sasha Levin <sashal@kernel.org>
26 ---
27 mm/memcontrol.c | 10 ++++++++--
28 1 file changed, 8 insertions(+), 2 deletions(-)
29
30 diff --git a/mm/memcontrol.c b/mm/memcontrol.c
31 index de51787831728..51ce5d172855a 100644
32 --- a/mm/memcontrol.c
33 +++ b/mm/memcontrol.c
34 @@ -4068,11 +4068,17 @@ static int memcg_stat_show(struct seq_file *m, void *v)
35 (u64)memsw * PAGE_SIZE);
36
37 for (i = 0; i < ARRAY_SIZE(memcg1_stats); i++) {
38 + unsigned long nr;
39 +
40 if (memcg1_stats[i] == MEMCG_SWAP && !do_memsw_account())
41 continue;
42 + nr = memcg_page_state(memcg, memcg1_stats[i]);
43 +#ifdef CONFIG_TRANSPARENT_HUGEPAGE
44 + if (memcg1_stats[i] == NR_ANON_THPS)
45 + nr *= HPAGE_PMD_NR;
46 +#endif
47 seq_printf(m, "total_%s %llu\n", memcg1_stat_names[i],
48 - (u64)memcg_page_state(memcg, memcg1_stats[i]) *
49 - PAGE_SIZE);
50 + (u64)nr * PAGE_SIZE);
51 }
52
53 for (i = 0; i < ARRAY_SIZE(memcg1_events); i++)
54 --
55 2.27.0
56