[PATCH] crash: keep crashkernel CMA pages reserved if activation fails

From: Usama Arif

Date: Wed Nov 04 2026 - 10:00:18 EST


reserve_crashkernel_cma() adds each crashkernel CMA area to
crashk_cma_ranges[] as soon as it is declared. If the area later fails
activation, e.g. because movablecore= put the ZONE_MOVABLE boundary
inside it, cma_activate_area() releases the pages to the buddy allocator
as ordinary memory. The range is still handed to the crash kernel and
excluded from the vmcore, so kernel data that lands there is overwritten
by the crash kernel and missing from the dump.

Mark the areas with cma_reserve_pages_on_error(), so that a failed
activation leaves the pages reserved: lost to the first kernel, but safe
for the crash kernel to use.

Fixes: ab475510e042 ("kdump: implement reserve_crashkernel_cma")
Signed-off-by: Usama Arif <usama.arif@xxxxxxxxx>
---
kernel/crash_reserve.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/kernel/crash_reserve.c b/kernel/crash_reserve.c
index a03f0a4305a4e..a4b616ed49482 100644
--- a/kernel/crash_reserve.c
+++ b/kernel/crash_reserve.c
@@ -498,6 +498,7 @@ void __init reserve_crashkernel_cma(unsigned long long cma_size)
continue;
}

+ cma_reserve_pages_on_error(res);
crashk_cma_ranges[crashk_cma_cnt].start = cma_get_base(res);
crashk_cma_ranges[crashk_cma_cnt].end =
crashk_cma_ranges[crashk_cma_cnt].start +
--
2.53.0-Meta