Accepting request 791930 from Kernel:kdump
- Add -fcommon in order to fix boo#1160282. - Refresh patch with upstream version - makedumpfile-arm64-VA-range-SUSE.patch + makedumpfile-arm64-Align-PMD_SECTION_MASK-with-PHYS_MASK.patch - makedumpfile-Fix-cd_header-offset-overflow-with-large-pfn.patch: Fix integer overflow with large memory configuration (bsc#1168234). OBS-URL: https://build.opensuse.org/request/show/791930 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/makedumpfile?expand=0&rev=77
This commit is contained in:
commit
47f325f5fb
@ -0,0 +1,44 @@
|
|||||||
|
From 6e4b2dfaed5e5e5c617e0e45f969c1f571c13e27 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jialong Chen <chenjialong@huawei.com>
|
||||||
|
Date: Mon, 23 Mar 2020 16:42:01 -0400
|
||||||
|
Subject: Fix cd_header offset overflow with large pfn
|
||||||
|
Upstream: merged (expected 1.6.8)
|
||||||
|
Git-commit: 6e4b2dfaed5e5e5c617e0e45f969c1f571c13e27
|
||||||
|
|
||||||
|
In function write_kdump_pages_and_bitmap_cyclic(), cd_header->offset is
|
||||||
|
calculated by the following formula:
|
||||||
|
|
||||||
|
cd_header->offset
|
||||||
|
= (DISKDUMP_HEADER_BLOCKS + dh->sub_hdr_size + dh->bitmap_blocks)
|
||||||
|
* dh->block_size;
|
||||||
|
|
||||||
|
However, the variables of the right side are only int and unsigned int,
|
||||||
|
so if dh->bitmap_blocks is very large, it causes an interger overflow.
|
||||||
|
|
||||||
|
As a result, makedumpfile created a broken vmcore in a system with a
|
||||||
|
physical address range from 0x602770ecf000 to 0x6027ffffffff, and the
|
||||||
|
crash utility failed during session initialization, ending with the
|
||||||
|
error message "crash: vmlinux and vmcore do not match!".
|
||||||
|
|
||||||
|
Signed-off-by: Jialong Chen <chenjialong@huawei.com>
|
||||||
|
Signed-off-by: Kazuhito Hagio <k-hagio-ab@nec.com>
|
||||||
|
---
|
||||||
|
diskdump_mod.h | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/diskdump_mod.h b/diskdump_mod.h
|
||||||
|
index 267681712a2a..3733953dee12 100644
|
||||||
|
--- a/diskdump_mod.h
|
||||||
|
+++ b/diskdump_mod.h
|
||||||
|
@@ -22,7 +22,7 @@
|
||||||
|
#define DISK_DUMP_SIGNATURE "DISKDUMP"
|
||||||
|
#define KDUMP_SIGNATURE "KDUMP "
|
||||||
|
#define SIG_LEN (sizeof(DUMP_PARTITION_SIGNATURE) - 1)
|
||||||
|
-#define DISKDUMP_HEADER_BLOCKS (1)
|
||||||
|
+#define DISKDUMP_HEADER_BLOCKS (1UL)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* These are all remnants of the old "diskdump" facility,
|
||||||
|
--
|
||||||
|
2.23.0
|
||||||
|
|
@ -0,0 +1,38 @@
|
|||||||
|
From 7242ae4cb5288df626f464ced0a8b60fd669100b Mon Sep 17 00:00:00 2001
|
||||||
|
From: Michal Suchanek <msuchanek@suse.de>
|
||||||
|
Date: Mon, 16 Mar 2020 19:39:58 +0100
|
||||||
|
Subject: Align PMD_SECTION_MASK with PHYS_MASK
|
||||||
|
Upstream: merged (expected 1.6.8)
|
||||||
|
Git-commit: 7242ae4cb5288df626f464ced0a8b60fd669100b
|
||||||
|
|
||||||
|
Reportedly on some arm64 systems makedumpfile loops forever exhausting
|
||||||
|
all memory when filtering kernel core. It turns out the reason is it
|
||||||
|
cannot resolve some addresses because the PMD mask is wrong. When
|
||||||
|
physical address mask allows up to 48bits pmd mask should allow the
|
||||||
|
same.
|
||||||
|
I suppose you would need a system that needs physical addresses over 1TB
|
||||||
|
to be able to reproduce this. This may be either because you have a lot
|
||||||
|
of memory or because the firmware mapped some memory above 1TB for some
|
||||||
|
reason.
|
||||||
|
|
||||||
|
Signed-off-by: Michal Suchanek <msuchanek@suse.de>
|
||||||
|
---
|
||||||
|
arch/arm64.c | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/arch/arm64.c b/arch/arm64.c
|
||||||
|
index 43164ccc32d4..54d60b440850 100644
|
||||||
|
--- a/arch/arm64.c
|
||||||
|
+++ b/arch/arm64.c
|
||||||
|
@@ -81,7 +81,7 @@ static unsigned long kimage_voffset;
|
||||||
|
* Remove the highest order bits that are not a part of the
|
||||||
|
* physical address in a section
|
||||||
|
*/
|
||||||
|
-#define PMD_SECTION_MASK ((1UL << 40) - 1)
|
||||||
|
+#define PMD_SECTION_MASK ((1UL << PHYS_MASK_SHIFT) - 1)
|
||||||
|
|
||||||
|
#define PMD_TYPE_MASK 3
|
||||||
|
#define PMD_TYPE_SECT 1
|
||||||
|
--
|
||||||
|
2.23.0
|
||||||
|
|
@ -1,24 +0,0 @@
|
|||||||
Subject: Align PMD_SECTION_MASK with CONFIG_ARM64_VA_BITS
|
|
||||||
|
|
||||||
References: bsc#1142715
|
|
||||||
|
|
||||||
Since SUSE 4.12 kernel the VA renge is increased to 48 bits.
|
|
||||||
|
|
||||||
Upstream proposed to export the VA range in vmcoreinfo but we did not backport
|
|
||||||
the patch.
|
|
||||||
|
|
||||||
Link: https://lists.infradead.org/pipermail/kexec/2019-November/023966.html
|
|
||||||
Link: https://patchwork.kernel.org/cover/11266557/
|
|
||||||
|
|
||||||
diff -ur makedumpfile-1.6.7.orig/arch/arm64.c makedumpfile-1.6.7/arch/arm64.c
|
|
||||||
--- makedumpfile-1.6.7.orig/arch/arm64.c 2020-01-15 19:09:56.000000000 +0100
|
|
||||||
+++ makedumpfile-1.6.7/arch/arm64.c 2020-03-04 14:38:02.281783810 +0100
|
|
||||||
@@ -81,7 +81,7 @@
|
|
||||||
* Remove the highest order bits that are not a part of the
|
|
||||||
* physical address in a section
|
|
||||||
*/
|
|
||||||
-#define PMD_SECTION_MASK ((1UL << 40) - 1)
|
|
||||||
+#define PMD_SECTION_MASK ((1UL << 48) - 1)
|
|
||||||
|
|
||||||
#define PMD_TYPE_MASK 3
|
|
||||||
#define PMD_TYPE_SECT 1
|
|
@ -1,3 +1,17 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri Apr 3 05:51:49 UTC 2020 - Martin Liška <mliska@suse.cz>
|
||||||
|
|
||||||
|
- Add -fcommon in order to fix boo#1160282.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Apr 1 06:11:18 UTC 2020 - Michal Suchanek <msuchanek@suse.de>
|
||||||
|
|
||||||
|
- Refresh patch with upstream version
|
||||||
|
- makedumpfile-arm64-VA-range-SUSE.patch
|
||||||
|
+ makedumpfile-arm64-Align-PMD_SECTION_MASK-with-PHYS_MASK.patch
|
||||||
|
- makedumpfile-Fix-cd_header-offset-overflow-with-large-pfn.patch: Fix integer
|
||||||
|
overflow with large memory configuration (bsc#1168234).
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Wed Mar 4 13:45:23 UTC 2020 - Michal Suchanek <msuchanek@suse.com>
|
Wed Mar 4 13:45:23 UTC 2020 - Michal Suchanek <msuchanek@suse.com>
|
||||||
|
|
||||||
|
@ -43,7 +43,8 @@ Source99: %{name}-rpmlintrc
|
|||||||
Patch1: %{name}-override-libtinfo.patch
|
Patch1: %{name}-override-libtinfo.patch
|
||||||
Patch2: %{name}-ppc64-VA-range-SUSE.patch
|
Patch2: %{name}-ppc64-VA-range-SUSE.patch
|
||||||
Patch3: %{name}-PN_XNUM.patch
|
Patch3: %{name}-PN_XNUM.patch
|
||||||
Patch4: %{name}-arm64-VA-range-SUSE.patch
|
Patch4: %{name}-arm64-Align-PMD_SECTION_MASK-with-PHYS_MASK.patch
|
||||||
|
Patch5: %{name}-Fix-cd_header-offset-overflow-with-large-pfn.patch
|
||||||
BuildRequires: libdw-devel
|
BuildRequires: libdw-devel
|
||||||
BuildRequires: libelf-devel
|
BuildRequires: libelf-devel
|
||||||
BuildRequires: libeppic-devel
|
BuildRequires: libeppic-devel
|
||||||
@ -73,7 +74,7 @@ via gdb or crash utility.
|
|||||||
%autopatch -p1
|
%autopatch -p1
|
||||||
|
|
||||||
%build
|
%build
|
||||||
export CFLAGS="%{optflags}"
|
export CFLAGS="%{optflags} -fcommon"
|
||||||
%if %{have_snappy}
|
%if %{have_snappy}
|
||||||
export USESNAPPY=on
|
export USESNAPPY=on
|
||||||
%endif
|
%endif
|
||||||
|
Loading…
Reference in New Issue
Block a user