diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 9327a940e373..dcc8a1cf55b6 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -5282,14 +5282,18 @@ static int __build_all_zonelists(void *data) memset(node_load, 0, sizeof(node_load)); #endif + /* + * This node is hotadded and no memory is yet present. So just + * building zonelists is fine - no need to touch other nodes. + */ if (self && !node_online(self->node_id)) { build_zonelists(self); - } + } else { + for_each_online_node(nid) { + pg_data_t *pgdat = NODE_DATA(nid); - for_each_online_node(nid) { - pg_data_t *pgdat = NODE_DATA(nid); - - build_zonelists(pgdat); + build_zonelists(pgdat); + } } /*