Before adding to usablemem_rgns, check if the memory range is already included.
Signed-off-by: chenhaixiang <chenhaixiang3@huawei.com>
This commit is contained in:
parent
41abeac531
commit
77f6d0d23a
56
Before-adding-to-usablemem_rgns-check-if-the-memory-.patch
Normal file
56
Before-adding-to-usablemem_rgns-check-if-the-memory-.patch
Normal file
@ -0,0 +1,56 @@
|
||||
From 13e0a9327a42d78b0c0d0f672e02d8013187251a Mon Sep 17 00:00:00 2001
|
||||
From: Chen Haixiang <chenhaixiang3@huawei.com>
|
||||
Date: Mon, 21 Oct 2024 20:00:25 +0800
|
||||
Subject: [PATCH] Before adding to usablemem_rgns, check if the memory range is
|
||||
already included.
|
||||
|
||||
When kexec_iomem_for_each_line() reads from /proc/iomem,
|
||||
concurrent modifications to /proc/iomem may lead to
|
||||
usablemem_rgns recording duplicate Crash kernel segments.
|
||||
This can result in the number of retrieved Crash kernel
|
||||
segments exceeding CRASH_MAX_RESERVED_RANGES, triggering
|
||||
a realloc of the crash_reserved_mem in usablemem_rgns,
|
||||
which could crash the process. We should ensure that each
|
||||
range added to usablemem_rgns is unique to prevent these issues.
|
||||
|
||||
Reviewed-by: Louhongxiang <louhongxiang@huawei.com>
|
||||
Reviewed-by: wangbin <wangbin224@huawei.com>
|
||||
Reviewed-by: yangyanchao <yangyanchao6@huawei.com>
|
||||
Signed-off-by: chenhaixiang <chenhaixiang3@huawei.com>
|
||||
Signed-off-by: Simon Horman <horms@kernel.org>
|
||||
---
|
||||
kexec/arch/arm64/crashdump-arm64.c | 16 ++++++++++++++--
|
||||
1 file changed, 14 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/kexec/arch/arm64/crashdump-arm64.c b/kexec/arch/arm64/crashdump-arm64.c
|
||||
index 3098315..f23b2bf 100644
|
||||
--- a/kexec/arch/arm64/crashdump-arm64.c
|
||||
+++ b/kexec/arch/arm64/crashdump-arm64.c
|
||||
@@ -63,10 +63,22 @@ static int iomem_range_callback(void *UNUSED(data), int UNUSED(nr),
|
||||
char *str, unsigned long long base,
|
||||
unsigned long long length)
|
||||
{
|
||||
- if (strncmp(str, CRASH_KERNEL, strlen(CRASH_KERNEL)) == 0)
|
||||
+ int i;
|
||||
+
|
||||
+ if (strncmp(str, CRASH_KERNEL, strlen(CRASH_KERNEL)) == 0) {
|
||||
+ /*
|
||||
+ * Checks whether the area exists in crash_reserved_mem.
|
||||
+ */
|
||||
+ for (i = 0; i < usablemem_rgns.max_size; i++) {
|
||||
+ if (usablemem_rgns.ranges[i].start == base) {
|
||||
+ fprintf(stderr, "Warning, the range already exists in usablemem_rgns, base=%lx, length=%lx\n",
|
||||
+ base, length);
|
||||
+ return 0;
|
||||
+ }
|
||||
+ }
|
||||
return mem_regions_alloc_and_add(&usablemem_rgns,
|
||||
base, length, RANGE_RAM);
|
||||
- else if (strncmp(str, SYSTEM_RAM, strlen(SYSTEM_RAM)) == 0)
|
||||
+ } else if (strncmp(str, SYSTEM_RAM, strlen(SYSTEM_RAM)) == 0)
|
||||
return mem_regions_alloc_and_add(&system_memory_rgns,
|
||||
base, length, RANGE_RAM);
|
||||
else if (strncmp(str, KERNEL_CODE, strlen(KERNEL_CODE)) == 0) {
|
||||
--
|
||||
2.43.0
|
||||
|
||||
@ -4,7 +4,7 @@
|
||||
|
||||
Name: kexec-tools
|
||||
Version: 2.0.26
|
||||
Release: 10
|
||||
Release: 11
|
||||
License: GPLv2
|
||||
Summary: The kexec/kdump userspace component
|
||||
URL: https://www.kernel.org/
|
||||
@ -89,6 +89,7 @@ Patch0008: Add-loongarch-iomem.h.patch
|
||||
Patch0009: Fix-incorrect-page-exclusion-in-exclude_nodata_pages.patch
|
||||
Patch0010: loongarch64-fix-kernel-image-size-error.patch
|
||||
%endif
|
||||
Patch0011: Before-adding-to-usablemem_rgns-check-if-the-memory-.patch
|
||||
|
||||
%description
|
||||
kexec-tools provides /sbin/kexec binary that facilitates a new
|
||||
@ -297,6 +298,9 @@ done
|
||||
%endif
|
||||
|
||||
%changelog
|
||||
* Mon Feb 10 2025 chenhaixiang <chenhaixiang3@live.com> - 2.0.26-11
|
||||
- Before adding to usablemem_rgns, check if the memory range is already included.
|
||||
|
||||
* Mon Jan 6 2025 Ming Wang <wangming01@loongson.cn> - 2.0.26-10
|
||||
- Fix loongarch kdump image size overflow issue.
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user