|
@@ -1779,7 +1779,11 @@ void try_offline_node(int nid)
|
|
|
for (i = 0; i < MAX_NR_ZONES; i++) {
|
|
for (i = 0; i < MAX_NR_ZONES; i++) {
|
|
|
struct zone *zone = pgdat->node_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);
|
|
vfree(zone->wait_table);
|
|
|
}
|
|
}
|
|
|
|
|
|