panic("Cannot allocate %zuB for node %d.\n",
                                       sizeof(*pgdat), nid);
                        arch_refresh_nodedata(nid, pgdat);
-                       free_area_init_node(nid);
-
-                       /*
-                        * We do not want to confuse userspace by sysfs
-                        * files/directories for node without any memory
-                        * attached to it, so this node is not marked as
-                        * N_MEMORY and not marked online so that no sysfs
-                        * hierarchy will be created via register_one_node for
-                        * it. The pgdat will get fully initialized by
-                        * hotadd_init_pgdat() when memory is hotplugged into
-                        * this node.
-                        */
-                       continue;
                }
 
                pgdat = NODE_DATA(nid);
                free_area_init_node(nid);
 
-               /* Any memory on that node */
-               if (pgdat->node_present_pages)
+               /*
+                * No sysfs hierarcy will be created via register_one_node()
+                *for memory-less node because here it's not marked as N_MEMORY
+                *and won't be set online later. The benefit is userspace
+                *program won't be confused by sysfs files/directories of
+                *memory-less node. The pgdat will get fully initialized by
+                *hotadd_init_pgdat() when memory is hotplugged into this node.
+                */
+               if (pgdat->node_present_pages) {
                        node_set_state(nid, N_MEMORY);
-               check_for_memory(pgdat);
+                       check_for_memory(pgdat);
+               }
        }
 
        calc_nr_kernel_pages();