!116 Before adding to usablemem_rgns, check if the memory range is already included.
From: @chenhaixaing Reviewed-by: @wangbin224 Signed-off-by: @wangbin224
This commit is contained in:
commit
4a4f1196d8
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
|
Name: kexec-tools
|
||||||
Version: 2.0.26
|
Version: 2.0.26
|
||||||
Release: 10
|
Release: 11
|
||||||
License: GPLv2
|
License: GPLv2
|
||||||
Summary: The kexec/kdump userspace component
|
Summary: The kexec/kdump userspace component
|
||||||
URL: https://www.kernel.org/
|
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
|
Patch0009: Fix-incorrect-page-exclusion-in-exclude_nodata_pages.patch
|
||||||
Patch0010: loongarch64-fix-kernel-image-size-error.patch
|
Patch0010: loongarch64-fix-kernel-image-size-error.patch
|
||||||
%endif
|
%endif
|
||||||
|
Patch0011: Before-adding-to-usablemem_rgns-check-if-the-memory-.patch
|
||||||
|
|
||||||
%description
|
%description
|
||||||
kexec-tools provides /sbin/kexec binary that facilitates a new
|
kexec-tools provides /sbin/kexec binary that facilitates a new
|
||||||
@ -297,6 +298,9 @@ done
|
|||||||
%endif
|
%endif
|
||||||
|
|
||||||
%changelog
|
%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
|
* Mon Jan 6 2025 Ming Wang <wangming01@loongson.cn> - 2.0.26-10
|
||||||
- Fix loongarch kdump image size overflow issue.
|
- Fix loongarch kdump image size overflow issue.
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user