Accepting request 579305 from home:ptesarik:branches:Kernel:kdump

- kdump-always-kexec_load-if-kexec_file_load-fails.patch: Try
  kexec_load(2) if kexec_file_load(2) fails for any reason
  (bsc#1080916).

OBS-URL: https://build.opensuse.org/request/show/579305
OBS-URL: https://build.opensuse.org/package/show/Kernel:kdump/kdump?expand=0&rev=154
This commit is contained in:
Petr Tesařík 2018-02-23 08:36:15 +00:00 committed by Git OBS Bridge
parent b33257d653
commit ea2ea48bad
3 changed files with 63 additions and 0 deletions

View File

@ -0,0 +1,54 @@
From: Petr Tesarik <ptesarik@suse.com>
Date: Fri, 23 Feb 2018 08:59:00 +0100
Subject: Try kexec_load(2) if kexec_file_load(2) fails for any reason
References: bsc#1080916
Upstream: merged
Git-commit: c9f231320fe6544b4e8aedd24a571105c4ff458a
Currently, kexec_load(2) is attempted only if kexec_file_load(2) is
unavailable. However, kexec_file_load(2) may also fail for other
reasons (e.g. missing kernel signature). It makes sense to try the
older syscall in that case.
Signed-off-by: Petr Tesarik <ptesarik@suse.com>
---
init/load.sh | 14 ++++----------
1 file changed, 4 insertions(+), 10 deletions(-)
--- a/init/load.sh
+++ b/init/load.sh
@@ -164,30 +164,24 @@ function load_kdump_kexec()
output=$(eval "$KEXEC_CALL -s" 2>&1)
result=$?
- if [ $result -eq 255 ] ; then
- echo $output | grep -q 'syscall kexec_file_load not available' && result=7
- fi
# print stderr in any case to show warnings that normally
# would be supressed (bnc#374185)
- echo -n "$output"; echo
+ echo "$output"
if [ $result -eq 0 ] ; then
kdump_logger "Loaded kdump kernel: $KEXEC_CALL -s, Result: $output"
return 0
- elif [ $result -ne 7 ]; then
- kdump_logger "FAILED to load kdump kernel: $KEXEC_CALL -s, Result: $output"
- return $result
fi
- # kexec_file_load(2) not available
- kdump_echo "kexec_file_load(2) not available"
+ # kexec_file_load(2) failed
+ kdump_echo "kexec_file_load(2) failed"
kdump_echo "Starting load kdump kernel with kexec_load(2)"
kdump_echo "kexec cmdline: $KEXEC_CALL"
output=$(eval "$KEXEC_CALL" 2>&1)
result=$?
- echo -n "$output";echo
+ echo "$output"
if [ $result -eq 0 ] ; then
kdump_logger "Loaded kdump kernel: $KEXEC_CALL, Result: $output"

View File

@ -1,3 +1,10 @@
-------------------------------------------------------------------
Fri Feb 23 08:07:59 UTC 2018 - ptesarik@suse.com
- kdump-always-kexec_load-if-kexec_file_load-fails.patch: Try
kexec_load(2) if kexec_file_load(2) fails for any reason
(bsc#1080916).
-------------------------------------------------------------------
Thu Feb 22 13:10:33 UTC 2018 - ptesarik@suse.com

View File

@ -87,6 +87,7 @@ Patch37: %{name}-fix-missing-index-of-kdump_Host.patch
Patch38: %{name}-nsswitch.conf-filtering.patch
Patch39: %{name}-calibrate-do-not-add-KDUMP_PHYS_LOAD-to-RAM.patch
Patch40: %{name}-bootloader-filter-out-KDUMPTOOL_FLAGS.patch
Patch41: %{name}-always-kexec_load-if-kexec_file_load-fails.patch
BuildRequires: asciidoc
BuildRequires: cmake
BuildRequires: gcc-c++
@ -189,6 +190,7 @@ cp %{S:1} tests/data/
%patch38 -p1
%patch39 -p1
%patch40 -p1
%patch41 -p1
%build
export CFLAGS="%{optflags}"