[PATCH] crashdump-x86.c:Add a check for the crash kernel range in exclude_region()
chenhaixiang
chenhaixiang3 at huawei.com
Thu Mar 21 04:33:17 PDT 2024
In some cases, such as start < mstart < mend < end when exclude_region(),
this results in crash_memory_range[i].end becoming less than
crash_memory_range[i].start, leading to incorrect address ranges.
Adding a range check should be necessary.
Signed-off-by: chenhaixiang chenhaixiang3 at huawei.com
---
kexec/arch/i386/crashdump-x86.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/kexec/arch/i386/crashdump-x86.c b/kexec/arch/i386/crashdump-x86.c
index a01031e..30e9a41 100644
--- a/kexec/arch/i386/crashdump-x86.c
+++ b/kexec/arch/i386/crashdump-x86.c
@@ -447,6 +447,14 @@ static int exclude_region(int *nr_ranges, uint64_t start, uint64_t end)
else
crash_memory_range[i].start = end + 1;
}
+ if (crash_memory_range[i].end < crash_memory_range[i].start) {
+ /* Crash memory range is unreasonable. */
+ fprintf(stderr, "Error: Crash memory range is unreasonable.\n");
+ dbgprintf("exclude_region: crash_memory_range[%d]\n"
+ "start = %016llx,end = %016llx\n",
+ i, crash_memory_range[i].start, crash_memory_range[i].end);
+ return -1;
+ }
}
/* Insert split memory region, if any. */
if (tidx >= 0) {
--
2.33.0
More information about the kexec
mailing list