[PATCH] crashdump-x86.c:Add a check for the crash kernel range in exclude_region()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxxx
---
 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


_______________________________________________
kexec mailing list
kexec@xxxxxxxxxxxxxxxxxxx
http://lists.infradead.org/mailman/listinfo/kexec



[Index of Archives]     [LM Sensors]     [Linux Sound]     [ALSA Users]     [ALSA Devel]     [Linux Audio Users]     [Linux Media]     [Kernel]     [Gimp]     [Yosemite News]     [Linux Media]

  Powered by Linux