mm, hotplug: fix error handling in mem_online_node()
[deliverable/linux.git] / mm / memory_hotplug.c
index 9f646374e32f5ec7704b86ad653c2794037b830a..78dba9f04b5b7132d6e9c4090be80e0288d1633f 100644 (file)
@@ -494,6 +494,12 @@ static pg_data_t __ref *hotadd_new_pgdat(int nid, u64 start)
        /* init node's zones as empty zones, we don't have any present pages.*/
        free_area_init_node(nid, zones_size, start_pfn, zholes_size);
 
+       /*
+        * The node we allocated has no zone fallback lists. For avoiding
+        * to access not-initialized zonelist, build here.
+        */
+       build_all_zonelists(NULL);
+
        return pgdat;
 }
 
@@ -515,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;
        }
This page took 0.025652 seconds and 5 git commands to generate.