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  PHC 
Open Source and information security mailing list archives
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Fri,  7 Mar 2014 17:07:47 -0800
From:	Greg Kroah-Hartman <>
Cc:	Greg Kroah-Hartman <>,, Jianguo Wu <>,
	Jiang Liu <>, Mel Gorman <>,
	Michal Hocko <>,
	Minchan Kim <>,
	Rusty Russell <>,
	Yinghai Lu <>,
	Tony Luck <>,
	KAMEZAWA Hiroyuki <>,
	KOSAKI Motohiro <>,
	David Rientjes <>,
	Keping Chen <>,
	Andrew Morton <>,
	Linus Torvalds <>,
	Ben Hutchings <>,
	Qiang Huang <>
Subject: [PATCH 3.4 51/99] mm/hotplug: correctly add new zone to all other nodes zone lists

3.4-stable review patch.  If anyone has any objections, please let me know.


From: Jiang Liu <>

commit 08dff7b7d629807dbb1f398c68dd9cd58dd657a1 upstream.

When online_pages() is called to add new memory to an empty zone, it
rebuilds all zone lists by calling build_all_zonelists().  But there's a
bug which prevents the new zone to be added to other nodes' zone lists.

online_pages() {
	node_set_state(zone_to_nid(zone), N_HIGH_MEMORY)

Here the node of the zone is put into N_HIGH_MEMORY state after calling
build_all_zonelists(), but build_all_zonelists() only adds zones from
nodes in N_HIGH_MEMORY state to the fallback zone lists.

		->for_each_node_state(n, N_HIGH_MEMORY)

So memory in the new zone will never be used by other nodes, and it may
cause strange behavor when system is under memory pressure.  So put node
into N_HIGH_MEMORY state before calling build_all_zonelists().

Signed-off-by: Jianguo Wu <>
Signed-off-by: Jiang Liu <>
Cc: Mel Gorman <>
Cc: Michal Hocko <>
Cc: Minchan Kim <>
Cc: Rusty Russell <>
Cc: Yinghai Lu <>
Cc: Tony Luck <>
Cc: KAMEZAWA Hiroyuki <>
Cc: KOSAKI Motohiro <>
Cc: David Rientjes <>
Cc: Keping Chen <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Linus Torvalds <>
[bwh: Backported to 3.2: adjust context]
Signed-off-by: Ben Hutchings <>
Cc: Qiang Huang <>
Signed-off-by: Greg Kroah-Hartman <>

 mm/memory_hotplug.c |   15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

--- a/mm/memory_hotplug.c
+++ b/mm/memory_hotplug.c
@@ -515,19 +515,20 @@ int __ref online_pages(unsigned long pfn
 	zone->present_pages += onlined_pages;
 	zone->zone_pgdat->node_present_pages += onlined_pages;
-	if (need_zonelists_rebuild)
-		build_all_zonelists(zone);
-	else
-		zone_pcp_update(zone);
+	if (onlined_pages) {
+		node_set_state(zone_to_nid(zone), N_HIGH_MEMORY);
+		if (need_zonelists_rebuild)
+			build_all_zonelists(zone);
+		else
+			zone_pcp_update(zone);
+	}
-	if (onlined_pages) {
+	if (onlined_pages)
-		node_set_state(zone_to_nid(zone), N_HIGH_MEMORY);
-	}
 	vm_total_pages = nr_free_pagecache_pages();

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to
More majordomo info at
Please read the FAQ at

Powered by blists - more mailing lists