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

- kexec-tools-reset-getopt-before-falling-back-to-legacy.patch:
  Reset getopt before falling back to legacy syscall (bsc#1166105).

OBS-URL: https://build.opensuse.org/request/show/784673
OBS-URL: https://build.opensuse.org/package/show/Kernel:kdump/kexec-tools?expand=0&rev=123
This commit is contained in:
Petr Tesařík 2020-03-13 14:29:38 +00:00 committed by Git OBS Bridge
parent 27efdc99ef
commit 0086c47216
4 changed files with 63 additions and 0 deletions

View File

@ -3,6 +3,7 @@ From: Petr Tesarik <ptesarik@suse.com>
Date: Thu, 12 Mar 2020 20:12:12 +0100
Upstream: not yet, patch sent 2020-03-12
Subject: Fix kexec_file_load(2) error handling
References: bsc#1166105
The handling of kexec_file_load() error conditions needs some
improvement.

View File

@ -0,0 +1,54 @@
From dadafc4664c7b78ea1561ccca33986c9639106ec Mon Sep 17 00:00:00 2001
From: Petr Tesarik <ptesarik@suse.com>
Date: Fri, 13 Mar 2020 14:54:00 +0100
Upstream: not yet, patch sent 2020-03-13
Subject: Reset getopt before falling back to legacy syscall
References: bsc#1166105
The modules may need to parse the arguments again after
kexec_file_load(2) failed, but getopt is not reset.
This change fixes the --initrd option on s390x. Without this patch,
it will fail to load the initrd on kernels that do not implement
kexec_file_load(2).
Signed-off-by: Petr Tesarik <ptesarik@suse.com>
---
kexec/kexec.c | 12 ++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)
diff --git a/kexec/kexec.c b/kexec/kexec.c
index 33c1b4b..6601f1f 100644
--- a/kexec/kexec.c
+++ b/kexec/kexec.c
@@ -1538,8 +1538,12 @@ int main(int argc, char *argv[])
if (do_unload) {
if (do_kexec_file_syscall) {
result = kexec_file_unload(kexec_file_flags);
- if (result == EFALLBACK && do_kexec_fallback)
+ if (result == EFALLBACK && do_kexec_fallback) {
+ /* Reset getopt for fallback */
+ opterr = 1;
+ optind = 1;
do_kexec_file_syscall = 0;
+ }
}
if (!do_kexec_file_syscall)
result = k_unload(kexec_flags);
@@ -1548,8 +1552,12 @@ int main(int argc, char *argv[])
if (do_kexec_file_syscall) {
result = do_kexec_file_load(fileind, argc, argv,
kexec_file_flags);
- if (result == EFALLBACK && do_kexec_fallback)
+ if (result == EFALLBACK && do_kexec_fallback) {
+ /* Reset getopt for fallback */
+ opterr = 1;
+ optind = 1;
do_kexec_file_syscall = 0;
+ }
}
if (!do_kexec_file_syscall)
result = my_load(type, fileind, argc, argv,
--
2.16.4

View File

@ -1,3 +1,9 @@
-------------------------------------------------------------------
Fri Mar 13 14:11:55 UTC 2020 - Petr Tesařík <ptesarik@suse.com>
- kexec-tools-reset-getopt-before-falling-back-to-legacy.patch:
Reset getopt before falling back to legacy syscall (bsc#1166105).
-------------------------------------------------------------------
Fri Mar 13 08:37:58 UTC 2020 - Petr Tesařík <ptesarik@suse.com>

View File

@ -37,6 +37,7 @@ Patch8: %{name}-build-multiboot2-for-i386.patch
Patch9: %{name}-video-capability.patch
Patch10: %{name}-SYS_getrandom.patch
Patch11: %{name}-fix-kexec_file_load-error-handling.patch
Patch12: %{name}-reset-getopt-before-falling-back-to-legacy.patch
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: systemd-rpm-macros
@ -70,6 +71,7 @@ the loaded kernel after it panics.
%patch9 -p1
%patch10 -p1
%patch11 -p1
%patch12 -p1
%build
autoreconf -fvi