Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
fork

Configure Feed

Select the types of activity you want to include in your feed.

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 <linmiaohe@huawei.com>
Fixes: 3010f876500f ("mm: discard memblock data later")
Signed-off-by: Mike Rapoport <rppt@linux.ibm.com>

authored by

Miaohe Lin and committed by
Mike Rapoport
c94afc46 754e0b0e

+8 -2
+8 -2
mm/memblock.c
··· 366 366 addr = __pa(memblock.reserved.regions); 367 367 size = PAGE_ALIGN(sizeof(struct memblock_region) * 368 368 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); 370 373 } 371 374 372 375 if (memblock.memory.regions != memblock_memory_init_regions) { 373 376 addr = __pa(memblock.memory.regions); 374 377 size = PAGE_ALIGN(sizeof(struct memblock_region) * 375 378 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); 377 383 } 378 384 379 385 memblock_memory = NULL;