diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c index 9597eec8239d3f2e3fc2052179ed588643be53e0..ee3765760818a6623f86e48a6d775d2d6c2a75a2 100644 --- a/mm/memory_hotplug.c +++ b/mm/memory_hotplug.c @@ -1779,7 +1779,11 @@ void try_offline_node(int nid) for (i = 0; i < MAX_NR_ZONES; i++) { struct zone *zone = pgdat->node_zones + i; - if (zone->wait_table) + /* + * wait_table may be allocated from boot memory, + * here only free if it's allocated by vmalloc. + */ + if (is_vmalloc_addr(zone->wait_table)) vfree(zone->wait_table); }