]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blame - releases/3.4.56/mm-memory-hotplug-fix-lowmem-count-overflow-when-offline-pages.patch
4.14-stable patches
[thirdparty/kernel/stable-queue.git] / releases / 3.4.56 / mm-memory-hotplug-fix-lowmem-count-overflow-when-offline-pages.patch
CommitLineData
7425a565
GKH
1From cea27eb2a202959783f81254c48c250ddd80e129 Mon Sep 17 00:00:00 2001
2From: Wanpeng Li <liwanp@linux.vnet.ibm.com>
3Date: Wed, 3 Jul 2013 15:02:40 -0700
4Subject: mm/memory-hotplug: fix lowmem count overflow when offline pages
5
6From: Wanpeng Li <liwanp@linux.vnet.ibm.com>
7
8commit cea27eb2a202959783f81254c48c250ddd80e129 upstream.
9
10The logic for the memory-remove code fails to correctly account the
11Total High Memory when a memory block which contains High Memory is
12offlined as shown in the example below. The following patch fixes it.
13
14Before logic memory remove:
15
16MemTotal: 7603740 kB
17MemFree: 6329612 kB
18Buffers: 94352 kB
19Cached: 872008 kB
20SwapCached: 0 kB
21Active: 626932 kB
22Inactive: 519216 kB
23Active(anon): 180776 kB
24Inactive(anon): 222944 kB
25Active(file): 446156 kB
26Inactive(file): 296272 kB
27Unevictable: 0 kB
28Mlocked: 0 kB
29HighTotal: 7294672 kB
30HighFree: 5704696 kB
31LowTotal: 309068 kB
32LowFree: 624916 kB
33
34After logic memory remove:
35
36MemTotal: 7079452 kB
37MemFree: 5805976 kB
38Buffers: 94372 kB
39Cached: 872000 kB
40SwapCached: 0 kB
41Active: 626936 kB
42Inactive: 519236 kB
43Active(anon): 180780 kB
44Inactive(anon): 222944 kB
45Active(file): 446156 kB
46Inactive(file): 296292 kB
47Unevictable: 0 kB
48Mlocked: 0 kB
49HighTotal: 7294672 kB
50HighFree: 5181024 kB
51LowTotal: 4294752076 kB
52LowFree: 624952 kB
53
54[mhocko@suse.cz: fix CONFIG_HIGHMEM=n build]
55Signed-off-by: Wanpeng Li <liwanp@linux.vnet.ibm.com>
56Reviewed-by: Michal Hocko <mhocko@suse.cz>
57Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
58Cc: David Rientjes <rientjes@google.com>
59Cc: <stable@vger.kernel.org> [2.6.24+]
60Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
61Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
62Signed-off-by: Zhouping Liu <zliu@redhat.com>
63Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
64
65---
66 mm/page_alloc.c | 4 ++++
67 1 file changed, 4 insertions(+)
68
69--- a/mm/page_alloc.c
70+++ b/mm/page_alloc.c
71@@ -5592,6 +5592,10 @@ __offline_isolated_pages(unsigned long s
72 zone->free_area[order].nr_free--;
73 __mod_zone_page_state(zone, NR_FREE_PAGES,
74 - (1UL << order));
75+#ifdef CONFIG_HIGHMEM
76+ if (PageHighMem(page))
77+ totalhigh_pages -= 1 << order;
78+#endif
79 for (i = 0; i < (1 << order); i++)
80 SetPageReserved((page+i));
81 pfn += (1 << order);