diff options
author | Raphael Ning <raphning@amazon.com> | 2021-03-23 17:50:07 +0000 |
---|---|---|
committer | Simon Horman <horms@verge.net.au> | 2021-04-02 12:00:05 +0200 |
commit | 4b97ff97852832b4856f76827df2d53d34baae59 (patch) | |
tree | c62a1d59f50a63f77500bd917d5cc7171adde5a3 | |
parent | 2c30aa5c704901e5d5dcbe958a45a0b44948fdc7 (diff) |
kexec: Make --status work with normal kexec images
According to kexec(8) manpage, --status (-S) works with both
normal kexec (loaded by -l) and crash kernel (loaded by -p) image
types, and defaults to the latter. However, the implementation does
not match the description: `kexec -l -S` queries the -p image type
as if -l were not specified. This is because there is no internal
flag defined for the normal kexec type, and -S treats the zero flag
as the trigger for the default behaviour (-p).
Fix that by making sure the default behaviour for -S is not applied
when the -l option is present.
Signed-off-by: Raphael Ning <raphning@amazon.com>
Signed-off-by: Simon Horman <horms@verge.net.au>
-rw-r--r-- | kexec/kexec.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/kexec/kexec.c b/kexec/kexec.c index b4431ef..f63b36b 100644 --- a/kexec/kexec.c +++ b/kexec/kexec.c @@ -1337,6 +1337,7 @@ static void print_crashkernel_region_size(void) int main(int argc, char *argv[]) { + int has_opt_load = 0; int do_load = 1; int do_exec = 0; int do_load_jump_back_helper = 0; @@ -1394,6 +1395,7 @@ int main(int argc, char *argv[]) do_exec = 1; break; case OPT_LOAD: + has_opt_load = 1; do_load = 1; do_exec = 0; do_shutdown = 0; @@ -1513,7 +1515,7 @@ int main(int argc, char *argv[]) do_sync = 0; if (do_status) { - if (kexec_flags == 0) + if (kexec_flags == 0 && !has_opt_load) kexec_flags = KEXEC_ON_CRASH; do_load = 0; do_reuse_initrd = 0; |