s390/kexec_file: Fix potential segment overlap in ELF loader
authorPhilipp Rudo <prudo@linux.ibm.com>
Mon, 1 Apr 2019 10:13:42 +0000 (12:13 +0200)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Mon, 29 Apr 2019 08:43:43 +0000 (10:43 +0200)
When loading an ELF image via kexec_file the segment alignment is ignored
in the calculation for the load address of the next segment. When there are
multiple segments this can lead to segment overlap and thus load failure.

Signed-off-by: Philipp Rudo <prudo@linux.ibm.com>
Fixes: 8be018827154 ("s390/kexec_file: Add ELF loader")
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
arch/s390/kernel/kexec_elf.c

index 5a286b012043bc2c4437ebb1509241dad0282546..1d1c77c647d25923dd4362606e5e16f6ff1e3a3d 100644 (file)
@@ -53,7 +53,7 @@ static int kexec_file_add_elf_kernel(struct kimage *image,
                if (ret)
                        return ret;
 
-               data->memsz += buf.memsz;
+               data->memsz = ALIGN(data->memsz, phdr->p_align) + buf.memsz;
        }
 
        return 0;