summaryrefslogtreecommitdiff
path: root/arch/s390/boot/boot.h
diff options
context:
space:
mode:
authorVasily Gorbik <gor@linux.ibm.com>2023-01-23 12:49:47 +0100
committerHeiko Carstens <hca@linux.ibm.com>2023-02-06 11:13:54 +0100
commit22476f47b6b7fb7d066c71f67ebc11892adb0849 (patch)
treee2a9ef86f38f3501764f5f8aed29d20fd40e29c4 /arch/s390/boot/boot.h
parenteb33f9eb304a4c18beb5ba6362eaa5c4beaf40d8 (diff)
s390/boot: fix mem_detect extended area allocation
Allocation of mem_detect extended area was not considered neither in commit 9641b8cc733f ("s390/ipl: read IPL report at early boot") nor in commit b2d24b97b2a9 ("s390/kernel: add support for kernel address space layout randomization (KASLR)"). As a result mem_detect extended theoretically may overlap with ipl report or randomized kernel image position. But as mem_detect code will allocate extended area only upon exceeding 255 online regions (which should alternate with offline memory regions) it is not seen in practice. To make sure mem_detect extended area does not overlap with ipl report or randomized kernel position extend usage of "safe_addr". Make initrd handling and mem_detect extended area allocation code move it further right and make KASLR takes in into consideration as well. Fixes: 9641b8cc733f ("s390/ipl: read IPL report at early boot") Fixes: b2d24b97b2a9 ("s390/kernel: add support for kernel address space layout randomization (KASLR)") Reviewed-by: Alexander Gordeev <agordeev@linux.ibm.com> Signed-off-by: Vasily Gorbik <gor@linux.ibm.com> Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
Diffstat (limited to 'arch/s390/boot/boot.h')
-rw-r--r--arch/s390/boot/boot.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/arch/s390/boot/boot.h b/arch/s390/boot/boot.h
index 830cfabaa6a0..939d27da8fbd 100644
--- a/arch/s390/boot/boot.h
+++ b/arch/s390/boot/boot.h
@@ -33,10 +33,10 @@ struct vmlinux_info {
};
void startup_kernel(void);
-unsigned long detect_memory(void);
+unsigned long detect_memory(unsigned long *safe_addr);
bool is_ipl_block_dump(void);
void store_ipl_parmblock(void);
-unsigned long read_ipl_report(unsigned long safe_offset);
+unsigned long read_ipl_report(unsigned long safe_addr);
void setup_boot_command_line(void);
void parse_boot_command_line(void);
void verify_facilities(void);