Skip to content

Commit c94afc4

Browse files
MiaoheLinrppt
authored andcommitted
memblock: use kfree() to release kmalloced memblock regions
memblock.{reserved,memory}.regions may be allocated using kmalloc() in memblock_double_array(). Use kfree() to release these kmalloced regions indicated by memblock_{reserved,memory}_in_slab. Signed-off-by: Miaohe Lin <[email protected]> Fixes: 3010f87 ("mm: discard memblock data later") Signed-off-by: Mike Rapoport <[email protected]>
1 parent 754e0b0 commit c94afc4

File tree

1 file changed

+8
-2
lines changed

1 file changed

+8
-2
lines changed

mm/memblock.c

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -366,14 +366,20 @@ void __init memblock_discard(void)
366366
addr = __pa(memblock.reserved.regions);
367367
size = PAGE_ALIGN(sizeof(struct memblock_region) *
368368
memblock.reserved.max);
369-
memblock_free_late(addr, size);
369+
if (memblock_reserved_in_slab)
370+
kfree(memblock.reserved.regions);
371+
else
372+
memblock_free_late(addr, size);
370373
}
371374

372375
if (memblock.memory.regions != memblock_memory_init_regions) {
373376
addr = __pa(memblock.memory.regions);
374377
size = PAGE_ALIGN(sizeof(struct memblock_region) *
375378
memblock.memory.max);
376-
memblock_free_late(addr, size);
379+
if (memblock_memory_in_slab)
380+
kfree(memblock.memory.regions);
381+
else
382+
memblock_free_late(addr, size);
377383
}
378384

379385
memblock_memory = NULL;

0 commit comments

Comments
 (0)