From: Miaohe Lin Date: Fri, 29 Apr 2022 06:16:08 +0000 (-0700) Subject: mm/migration: fix potential invalid node access for reclaim-based migration X-Git-Tag: sched-urgent-2022-06-05~14^2~319 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=3f26c88bd66cd8ab1731763c68df7fe23a7671c0;p=users%2Fdwmw2%2Flinux.git mm/migration: fix potential invalid node access for reclaim-based migration If we failed to setup hotplug state callbacks for mm/demotion:online in some corner cases, node_demotion will be left uninitialized. Invalid node might be returned from the next_demotion_node() when doing reclaim-based migration. Use kcalloc to allocate node_demotion to fix the issue. Link: https://lkml.kernel.org/r/20220318111709.60311-11-linmiaohe@huawei.com Fixes: ac16ec835314 ("mm: migrate: support multiple target nodes demotion") Signed-off-by: Miaohe Lin Reviewed-by: "Huang, Ying" Cc: Alistair Popple Cc: Baolin Wang Cc: Muchun Song Cc: Zi Yan Signed-off-by: Andrew Morton --- diff --git a/mm/migrate.c b/mm/migrate.c index 173ba05070497..cb3fa7c240813 100644 --- a/mm/migrate.c +++ b/mm/migrate.c @@ -2479,9 +2479,9 @@ static int __meminit migrate_on_reclaim_callback(struct notifier_block *self, void __init migrate_on_reclaim_init(void) { - node_demotion = kmalloc_array(nr_node_ids, - sizeof(struct demotion_nodes), - GFP_KERNEL); + node_demotion = kcalloc(nr_node_ids, + sizeof(struct demotion_nodes), + GFP_KERNEL); WARN_ON(!node_demotion); hotplug_memory_notifier(migrate_on_reclaim_callback, 100);