summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVasily Gorbik <gor@linux.ibm.com>2026-08-19 12:30:05 +0200
committerHeiko Carstens <hca@linux.ibm.com>2026-09-01 12:44:47 +0200
commita0c798ed4103316c23938bdf625af364fbd38016 (patch)
treebf9c3bdaad97625fc88e052b772f6f06fbbe4b05
parentbb06e5a2a031c89b1f1f60ff45ce80f8e4f6ee56 (diff)
downloadlinux-a0c798ed4103316c23938bdf625af364fbd38016.tar.gz
linux-a0c798ed4103316c23938bdf625af364fbd38016.zip
s390/boot: Fix physical memory search range
search_mem_end() calculates the number of 1MB blocks with a signed int literal. CONFIG_MAX_PHYSMEM_BITS values of 51 and above either overflow the signed int or shift beyond its width. This produces an invalid search range when the binary-search memory detection fallback is used. Use an unsigned long literal so the full supported physical address range is represented. Fixes: 54c57795e848 ("s390/mem_detect: replace tprot loop with binary search") Reviewed-by: Heiko Carstens <hca@linux.ibm.com> Signed-off-by: Vasily Gorbik <gor@linux.ibm.com> Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
-rw-r--r--arch/s390/boot/physmem_info.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/s390/boot/physmem_info.c b/arch/s390/boot/physmem_info.c
index 1f2ca5435838..0ebb2174713f 100644
--- a/arch/s390/boot/physmem_info.c
+++ b/arch/s390/boot/physmem_info.c
@@ -141,7 +141,7 @@ static int tprot(unsigned long addr)
static unsigned long search_mem_end(void)
{
- unsigned long range = 1 << (MAX_PHYSMEM_BITS - 20); /* in 1MB blocks */
+ unsigned long range = 1UL << (MAX_PHYSMEM_BITS - 20); /* in 1MB blocks */
unsigned long offset = 0;
unsigned long pivot;