diff options
| -rw-r--r-- | arch/arm/mm/init.c | 5 | ||||
| -rw-r--r-- | arch/arm64/mm/init.c | 5 |
2 files changed, 10 insertions, 0 deletions
diff --git a/arch/arm/mm/init.c b/arch/arm/mm/init.c index b0703c8e1..a0107adb7 100644 --- a/arch/arm/mm/init.c +++ b/arch/arm/mm/init.c @@ -766,6 +766,11 @@ static int keep_initrd; void free_initrd_mem(unsigned long start, unsigned long end) { if (!keep_initrd) { + if (start == initrd_start) + start = round_down(start, PAGE_SIZE); + if (end == initrd_end) + end = round_up(end, PAGE_SIZE); + poison_init_mem((void *)start, PAGE_ALIGN(end) - start); free_reserved_area(start, end, 0, "initrd"); } diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c index 665d7eed8..6480106b7 100644 --- a/arch/arm64/mm/init.c +++ b/arch/arm64/mm/init.c @@ -426,6 +426,11 @@ static int keep_initrd; void free_initrd_mem(unsigned long start, unsigned long end) { if (!keep_initrd) { + if (start == initrd_start) + start = round_down(start, PAGE_SIZE); + if (end == initrd_end) + end = round_up(end, PAGE_SIZE); + poison_init_mem((void *)start, PAGE_ALIGN(end) - start); free_reserved_area(start, end, 0, "initrd"); } |
