When memory for crashkernel isn't reserved, it's confusing that kexec spits error message for unloading kdump kernel as if we were loading it: # kexec -p -u Memory for crashkernel is not reserved Please reserve memory by passing "crashkernel=X at Y" parameter to the kernel Then try loading kdump kernel # echo $? 1 It's more appropriate to test if memory is reserved only when loading kdump kernel. With this patch: # kexec -p -u # echo $? 0 It's also the same behavior with the case of trying to unload kernel from unloaded state. Signed-off-by: WANG Chao <chaowang at redhat.com> --- kexec/kexec.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/kexec/kexec.c b/kexec/kexec.c index 911c0f6..6a13f79 100644 --- a/kexec/kexec.c +++ b/kexec/kexec.c @@ -1175,7 +1175,8 @@ int main(int argc, char *argv[]) } } - if ((kexec_flags & KEXEC_ON_CRASH) && !is_crashkernel_mem_reserved()) { + if (do_load && (kexec_flags & KEXEC_ON_CRASH) && + !is_crashkernel_mem_reserved()) { die("Memory for crashkernel is not reserved\n" "Please reserve memory by passing" "\"crashkernel=X at Y\" parameter to kernel\n" -- 1.8.2.1