]> git.proxmox.com Git - mirror_ubuntu-eoan-kernel.git/commitdiff
s390/kexec: Fix checksum validation return code for kdump
authorPhilipp Rudo <prudo@linux.vnet.ibm.com>
Tue, 17 Oct 2017 10:28:08 +0000 (12:28 +0200)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Wed, 18 Oct 2017 12:11:16 +0000 (14:11 +0200)
Before kexec boots to a crash kernel it checks whether the image in memory
changed after load. This is done by the function kdump_csum_valid, which
returns true, i.e. an int != 0, on success and 0 otherwise. In other words
when kdump_csum_valid returns an error code it means that the validation
succeeded. This is not only counterintuitive but also produces the wrong
result if the kernel was build without CONFIG_CRASH_DUMP. Fix this by
making kdump_csum_valid return a bool.

Signed-off-by: Philipp Rudo <prudo@linux.vnet.ibm.com>
Acked-by: Michael Holzheu <holzheu@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
arch/s390/kernel/machine_kexec.c

index 3d0b14afa23258efa6047baa0954e1731fb166bb..51e8c63705a9ad0fe6de7cf98b984176cae7e04f 100644 (file)
@@ -144,7 +144,7 @@ static noinline void __machine_kdump(void *image)
 /*
  * Check if kdump checksums are valid: We call purgatory with parameter "0"
  */
-static int kdump_csum_valid(struct kimage *image)
+static bool kdump_csum_valid(struct kimage *image)
 {
 #ifdef CONFIG_CRASH_DUMP
        int (*start_kdump)(int) = (void *)image->start;
@@ -153,9 +153,9 @@ static int kdump_csum_valid(struct kimage *image)
        __arch_local_irq_stnsm(0xfb); /* disable DAT */
        rc = start_kdump(0);
        __arch_local_irq_stosm(0x04); /* enable DAT */
-       return rc ? 0 : -EINVAL;
+       return rc == 0;
 #else
-       return -EINVAL;
+       return false;
 #endif
 }