summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Rientjes <rientjes@google.com>2011-06-22 18:13:01 -0700
committerLinus Torvalds <torvalds@linux-foundation.org>2011-06-22 21:06:47 -0700
commit7553e8f2d5161a2b7a9b7a9f37be1b77e735552f (patch)
tree1e5413e5998a523f6f9a8ea647b56a6d91be4ee5
parentb1d7dd80aadb9042e83f9778b484a2f92e0b04d4 (diff)
downloadlwn-7553e8f2d5161a2b7a9b7a9f37be1b77e735552f.tar.gz
lwn-7553e8f2d5161a2b7a9b7a9f37be1b77e735552f.zip
mm, hotplug: fix error handling in mem_online_node()
The error handling in mem_online_node() is incorrect: hotadd_new_pgdat() returns NULL if the new pgdat could not have been allocated and a pointer to it otherwise. mem_online_node() should fail if hotadd_new_pgdat() fails, not the inverse. This fixes an issue when memoryless nodes are not onlined and their sysfs interface is not registered when their first cpu is brought up. The bug was introduced by commit cf23422b9d76 ("cpu/mem hotplug: enable CPUs online before local memory online") iow v2.6.35. Signed-off-by: David Rientjes <rientjes@google.com> Reviewed-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com> Cc: stable@kernel.org Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r--mm/memory_hotplug.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c
index 02159c755136..78dba9f04b5b 100644
--- a/mm/memory_hotplug.c
+++ b/mm/memory_hotplug.c
@@ -521,7 +521,7 @@ int mem_online_node(int nid)
lock_memory_hotplug();
pgdat = hotadd_new_pgdat(nid, 0);
- if (pgdat) {
+ if (!pgdat) {
ret = -ENOMEM;
goto out;
}