diff options
Diffstat (limited to 'mm/bootmem.c')
| -rw-r--r-- | mm/bootmem.c | 13 | 
1 files changed, 11 insertions, 2 deletions
| diff --git a/mm/bootmem.c b/mm/bootmem.c index 142c84a54993..13b0caa9793c 100644 --- a/mm/bootmem.c +++ b/mm/bootmem.c | |||
| @@ -15,6 +15,7 @@ | |||
| 15 | #include <linux/module.h> | 15 | #include <linux/module.h> | 
| 16 | #include <linux/kmemleak.h> | 16 | #include <linux/kmemleak.h> | 
| 17 | #include <linux/range.h> | 17 | #include <linux/range.h> | 
| 18 | #include <linux/memblock.h> | ||
| 18 | 19 | ||
| 19 | #include <asm/bug.h> | 20 | #include <asm/bug.h> | 
| 20 | #include <asm/io.h> | 21 | #include <asm/io.h> | 
| @@ -434,7 +435,8 @@ void __init free_bootmem_node(pg_data_t *pgdat, unsigned long physaddr, | |||
| 434 | unsigned long size) | 435 | unsigned long size) | 
| 435 | { | 436 | { | 
| 436 | #ifdef CONFIG_NO_BOOTMEM | 437 | #ifdef CONFIG_NO_BOOTMEM | 
| 437 | free_early(physaddr, physaddr + size); | 438 | kmemleak_free_part(__va(physaddr), size); | 
| 439 | memblock_x86_free_range(physaddr, physaddr + size); | ||
| 438 | #else | 440 | #else | 
| 439 | unsigned long start, end; | 441 | unsigned long start, end; | 
| 440 | 442 | ||
| @@ -459,7 +461,8 @@ void __init free_bootmem_node(pg_data_t *pgdat, unsigned long physaddr, | |||
| 459 | void __init free_bootmem(unsigned long addr, unsigned long size) | 461 | void __init free_bootmem(unsigned long addr, unsigned long size) | 
| 460 | { | 462 | { | 
| 461 | #ifdef CONFIG_NO_BOOTMEM | 463 | #ifdef CONFIG_NO_BOOTMEM | 
| 462 | free_early(addr, addr + size); | 464 | kmemleak_free_part(__va(addr), size); | 
| 465 | memblock_x86_free_range(addr, addr + size); | ||
| 463 | #else | 466 | #else | 
| 464 | unsigned long start, end; | 467 | unsigned long start, end; | 
| 465 | 468 | ||
| @@ -526,6 +529,12 @@ int __init reserve_bootmem(unsigned long addr, unsigned long size, | |||
| 526 | } | 529 | } | 
| 527 | 530 | ||
| 528 | #ifndef CONFIG_NO_BOOTMEM | 531 | #ifndef CONFIG_NO_BOOTMEM | 
| 532 | int __weak __init reserve_bootmem_generic(unsigned long phys, unsigned long len, | ||
| 533 | int flags) | ||
| 534 | { | ||
| 535 | return reserve_bootmem(phys, len, flags); | ||
| 536 | } | ||
| 537 | |||
| 529 | static unsigned long __init align_idx(struct bootmem_data *bdata, | 538 | static unsigned long __init align_idx(struct bootmem_data *bdata, | 
| 530 | unsigned long idx, unsigned long step) | 539 | unsigned long idx, unsigned long step) | 
| 531 | { | 540 | { | 
