From: Alexander Gordeev Date: Wed, 21 Feb 2024 13:32:24 +0000 (+0100) Subject: s390/boot: make type of __vmlinux_relocs_64_start|end consistent X-Git-Tag: for-linus-6.9~378^2~15 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=4394a50792346ec291d1bbde6da7571f799a6f12;p=users%2Fdwmw2%2Flinux.git s390/boot: make type of __vmlinux_relocs_64_start|end consistent Make the type of __vmlinux_relocs_64_start|end symbols as char array, just like it is done for all other sections. Function rescue_relocs() is simplified as result. Suggested-by: Heiko Carstens Acked-by: Heiko Carstens Signed-off-by: Alexander Gordeev Signed-off-by: Heiko Carstens --- diff --git a/arch/s390/boot/boot.h b/arch/s390/boot/boot.h index cebf9feba6b1c..567d60f78bbcc 100644 --- a/arch/s390/boot/boot.h +++ b/arch/s390/boot/boot.h @@ -88,7 +88,7 @@ extern unsigned long vmalloc_size; extern int vmalloc_size_set; extern char __boot_data_start[], __boot_data_end[]; extern char __boot_data_preserved_start[], __boot_data_preserved_end[]; -extern int __vmlinux_relocs_64_start[], __vmlinux_relocs_64_end[]; +extern char __vmlinux_relocs_64_start[], __vmlinux_relocs_64_end[]; extern char _decompressor_syms_start[], _decompressor_syms_end[]; extern char _stack_start[], _stack_end[]; extern char _end[], _decompressor_end[]; diff --git a/arch/s390/boot/startup.c b/arch/s390/boot/startup.c index 09490ddd6973d..d6709fd80fef1 100644 --- a/arch/s390/boot/startup.c +++ b/arch/s390/boot/startup.c @@ -177,18 +177,16 @@ static void kaslr_adjust_got(unsigned long offset) {} static void rescue_relocs(void) {} static void free_relocs(void) {} #else -int *vmlinux_relocs_64_start; -int *vmlinux_relocs_64_end; +static int *vmlinux_relocs_64_start; +static int *vmlinux_relocs_64_end; static void rescue_relocs(void) { - unsigned long size, nrelocs; + unsigned long size = __vmlinux_relocs_64_end - __vmlinux_relocs_64_start; - nrelocs = __vmlinux_relocs_64_end - __vmlinux_relocs_64_start; - size = nrelocs * sizeof(uint32_t); vmlinux_relocs_64_start = (void *)physmem_alloc_top_down(RR_RELOC, size, 0); - memmove(vmlinux_relocs_64_start, (void *)__vmlinux_relocs_64_start, size); - vmlinux_relocs_64_end = vmlinux_relocs_64_start + nrelocs; + vmlinux_relocs_64_end = (void *)vmlinux_relocs_64_start + size; + memmove(vmlinux_relocs_64_start, __vmlinux_relocs_64_start, size); } static void free_relocs(void)