Hello community, here is the log from the commit of package crash for openSUSE:Factory checked in at 2019-02-25 18:01:24 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/crash (Old) and /work/SRC/openSUSE:Factory/.crash.new.28833 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "crash" Mon Feb 25 18:01:24 2019 rev:151 rq:678956 version:7.2.3 Changes: -------- --- /work/SRC/openSUSE:Factory/crash/crash.changes 2018-11-08 09:50:46.524937983 +0100 +++ /work/SRC/openSUSE:Factory/.crash.new.28833/crash.changes 2019-02-25 18:01:34.178072976 +0100 @@ -1,0 +2,9 @@ +Thu Feb 14 19:23:00 CET 2019 - [email protected] + +- With a xen 4.11 dump crash will fail to start reporting "cannot + fill pcpu struct" and "cannot read cpu_info" due to xen changes + not tracked by crash updates. Fixed by including: + crash-xen-invalid-pcpu-vaddr-use-hardware-domain-symbol.patch + (bsc#1122594) + +------------------------------------------------------------------- New: ---- crash-xen-invalid-pcpu-vaddr-use-hardware-domain-symbol.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ crash.spec ++++++ --- /var/tmp/diff_new_pack.kkZe4R/_old 2019-02-25 18:01:37.878070002 +0100 +++ /var/tmp/diff_new_pack.kkZe4R/_new 2019-02-25 18:01:37.878070002 +0100 @@ -1,7 +1,7 @@ # # spec file for package crash # -# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -12,7 +12,7 @@ # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. -# Please submit bugfixes or comments via http://bugs.opensuse.org/ +# Please submit bugfixes or comments via https://bugs.opensuse.org/ # # needssslcertforbuild @@ -86,6 +86,7 @@ Patch21: %{name}-allow-use-of-sadump-captured-KASLR-kernel.patch Patch22: %{name}-fix-snprintf-overflow.patch Patch23: %{name}-update-recognition-of-x86_64-CPU_ENTRY_AREA.patch +Patch24: %{name}-xen-invalid-pcpu-vaddr-use-hardware-domain-symbol.patch Patch90: %{name}-sial-ps-2.6.29.diff BuildRequires: bison BuildRequires: flex @@ -284,6 +285,7 @@ %patch21 -p1 %patch22 -p1 %patch23 -p1 +%patch24 -p1 %if %{have_snappy} %patch15 -p1 %endif ++++++ crash-xen-invalid-pcpu-vaddr-use-hardware-domain-symbol.patch ++++++ Two fixes for the Xen hypervisor; the first fixes a bug seen with Xen 4.11.0 during initialization, which fails with the error message "crash: invalid kernel virtual address: <address> type: fill_pcpu_struct", followed by "WARNING: cannot fill pcpu_struct" and "crash: cannot read cpu_info". The second fix prevents a segmentation violation associated with a crash-7.1.1 commit that addressed the Xen 4.5.0 hypervisor symbol name change from "dom0" to "hardware_domain". ([email protected]) --- --- x86_64.c | 7 +++++-- xen_hyper.c | 8 ++++---- 2 files changed, 9 insertions(+), 6 deletions(-) --- a/x86_64.c +++ b/x86_64.c @@ -7808,8 +7808,11 @@ x86_64_init_hyper(int when) case POST_GDB: XEN_HYPER_STRUCT_SIZE_INIT(cpuinfo_x86, "cpuinfo_x86"); XEN_HYPER_STRUCT_SIZE_INIT(tss_struct, "tss_struct"); - XEN_HYPER_ASSIGN_OFFSET(tss_struct_rsp0) = MEMBER_OFFSET("tss_struct", "__blh") + sizeof(short unsigned int); - XEN_HYPER_MEMBER_OFFSET_INIT(tss_struct_ist, "tss_struct", "ist"); + if (MEMBER_EXISTS("tss_struct", "__blh")) { + XEN_HYPER_ASSIGN_OFFSET(tss_struct_rsp0) = MEMBER_OFFSET("tss_struct", "__blh") + sizeof(short unsigned int); + } else { + XEN_HYPER_ASSIGN_OFFSET(tss_struct_rsp0) = MEMBER_OFFSET("tss_struct", "rsp0"); + } XEN_HYPER_MEMBER_OFFSET_INIT(tss_struct_ist, "tss_struct", "ist"); if (symbol_exists("cpu_data")) { xht->cpu_data_address = symbol_value("cpu_data"); } --- a/xen_hyper.c +++ b/xen_hyper.c @@ -1060,8 +1060,8 @@ xen_hyper_get_domains(void) long domain_next_in_list; int i, j; - if (!try_get_symbol_data("dom0", sizeof(void *), &domain)) - get_symbol_data("hardware_domain", sizeof(void *), &domain); + if (!try_get_symbol_data("hardware_domain", sizeof(void *), &domain)) + get_symbol_data("dom0", sizeof(void *), &domain); domain_next_in_list = MEMBER_OFFSET("domain", "next_in_list"); i = 0; @@ -1103,8 +1103,8 @@ xen_hyper_get_domain_next(int mod, ulong if (xhdt->dom0) { *next = xhdt->dom0->domain; } else { - if (!try_get_symbol_data("dom0", sizeof(void *), next)) - get_symbol_data("hardware_domain", sizeof(void *), next); + if (!try_get_symbol_data("hardware_domain", sizeof(void *), next)) + get_symbol_data("dom0", sizeof(void *), next); } return xhdt->domain_struct; break;
