diff --git a/makedumpfile-use-uts_namespace.name-offset-VMCOREINFO.patch b/makedumpfile-use-uts_namespace.name-offset-VMCOREINFO.patch new file mode 100644 index 0000000..c92f42b --- /dev/null +++ b/makedumpfile-use-uts_namespace.name-offset-VMCOREINFO.patch @@ -0,0 +1,96 @@ +From: Alexander Egorenkov +Date: Fri, 18 Sep 2020 13:55:56 +0200 +Subject: make use of 'uts_namespace.name' offset in VMCOREINFO +Upstream: merged +Git-commit: 54aec3878b3f91341e6bc735eda158cca5c54ec9 + +* Required for kernel 5.11 + +The offset of the field 'init_uts_ns.name' has changed since +kernel commit 9a56493f6942 ("uts: Use generic ns_common::count"). +Make use of the offset 'uts_namespace.name' if available in +VMCOREINFO. + +Signed-off-by: Alexander Egorenkov +Acked-by: Petr Tesarik +--- + makedumpfile.c | 17 +++++++++++++++-- + makedumpfile.h | 6 ++++++ + 2 files changed, 21 insertions(+), 2 deletions(-) + +--- a/makedumpfile.c ++++ b/makedumpfile.c +@@ -1159,7 +1159,10 @@ check_release(void) + if (SYMBOL(system_utsname) != NOT_FOUND_SYMBOL) { + utsname = SYMBOL(system_utsname); + } else if (SYMBOL(init_uts_ns) != NOT_FOUND_SYMBOL) { +- utsname = SYMBOL(init_uts_ns) + sizeof(int); ++ if (OFFSET(uts_namespace.name) != NOT_FOUND_STRUCTURE) ++ utsname = SYMBOL(init_uts_ns) + OFFSET(uts_namespace.name); ++ else ++ utsname = SYMBOL(init_uts_ns) + sizeof(int); + } else { + ERRMSG("Can't get the symbol of system_utsname.\n"); + return FALSE; +@@ -2040,6 +2043,11 @@ get_structure_info(void) + SIZE_INIT(cpu_spec, "cpu_spec"); + OFFSET_INIT(cpu_spec.mmu_features, "cpu_spec", "mmu_features"); + ++ /* ++ * Get offsets of the uts_namespace's members. ++ */ ++ OFFSET_INIT(uts_namespace.name, "uts_namespace", "name"); ++ + return TRUE; + } + +@@ -2109,7 +2117,10 @@ get_str_osrelease_from_vmlinux(void) + if (SYMBOL(system_utsname) != NOT_FOUND_SYMBOL) { + utsname = SYMBOL(system_utsname); + } else if (SYMBOL(init_uts_ns) != NOT_FOUND_SYMBOL) { +- utsname = SYMBOL(init_uts_ns) + sizeof(int); ++ if (OFFSET(uts_namespace.name) != NOT_FOUND_STRUCTURE) ++ utsname = SYMBOL(init_uts_ns) + OFFSET(uts_namespace.name); ++ else ++ utsname = SYMBOL(init_uts_ns) + sizeof(int); + } else { + ERRMSG("Can't get the symbol of system_utsname.\n"); + return FALSE; +@@ -2344,6 +2355,7 @@ write_vmcoreinfo_data(void) + WRITE_MEMBER_OFFSET("vmemmap_backing.list", vmemmap_backing.list); + WRITE_MEMBER_OFFSET("mmu_psize_def.shift", mmu_psize_def.shift); + WRITE_MEMBER_OFFSET("cpu_spec.mmu_features", cpu_spec.mmu_features); ++ WRITE_MEMBER_OFFSET("uts_namespace.name", uts_namespace.name); + + if (SYMBOL(node_data) != NOT_FOUND_SYMBOL) + WRITE_ARRAY_LENGTH("node_data", node_data); +@@ -2745,6 +2757,7 @@ read_vmcoreinfo(void) + READ_MEMBER_OFFSET("vmemmap_backing.list", vmemmap_backing.list); + READ_MEMBER_OFFSET("mmu_psize_def.shift", mmu_psize_def.shift); + READ_MEMBER_OFFSET("cpu_spec.mmu_features", cpu_spec.mmu_features); ++ READ_MEMBER_OFFSET("uts_namespace.name", uts_namespace.name); + + READ_STRUCTURE_SIZE("printk_log", printk_log); + READ_STRUCTURE_SIZE("printk_ringbuffer", printk_ringbuffer); +--- a/makedumpfile.h ++++ b/makedumpfile.h +@@ -1728,6 +1728,8 @@ struct size_table { + long cpu_spec; + + long pageflags; ++ ++ long uts_namespace; + }; + + struct offset_table { +@@ -1935,6 +1937,10 @@ struct offset_table { + struct cpu_spec_s { + long mmu_features; + } cpu_spec; ++ ++ struct uts_namespace_s { ++ long name; ++ } uts_namespace; + }; + + /* diff --git a/makedumpfile.changes b/makedumpfile.changes index d7f13a8..9609c47 100644 --- a/makedumpfile.changes +++ b/makedumpfile.changes @@ -1,3 +1,10 @@ +------------------------------------------------------------------- +Wed Apr 7 09:52:16 UTC 2021 - Petr Tesařík + +- Support kernel 5.11: + * makedumpfile-use-uts_namespace.name-offset-VMCOREINFO.patch: + make use of 'uts_namespace.name' offset in VMCOREINFO. + ------------------------------------------------------------------- Sun Apr 4 13:13:31 UTC 2021 - Petr Tesařík diff --git a/makedumpfile.spec b/makedumpfile.spec index 1f18a38..706f400 100644 --- a/makedumpfile.spec +++ b/makedumpfile.spec @@ -45,6 +45,7 @@ Patch2: %{name}-ppc64-VA-range-SUSE.patch Patch3: %{name}-PN_XNUM.patch Patch4: %{name}-printk-add-support-for-lockless-ringbuffer.patch Patch5: %{name}-printk-use-committed-finalized-state-value.patch +Patch6: %{name}-use-uts_namespace.name-offset-VMCOREINFO.patch BuildRequires: libdw-devel BuildRequires: libelf-devel BuildRequires: libeppic-devel