]> git.baikalelectronics.ru Git - kernel.git/commit
s390: avoid using global register for current_stack_pointer
authorVasily Gorbik <gor@linux.ibm.com>
Fri, 4 Nov 2022 11:06:47 +0000 (12:06 +0100)
committerAlexander Gordeev <agordeev@linux.ibm.com>
Wed, 16 Nov 2022 10:39:12 +0000 (11:39 +0100)
commitc3a1ff502bff39b14ccf73f97ea67251d6da657c
tree6afd3e3b7f54be971a0c0b42ebc3212fad7c1daa
parent14eeaf0f8eb61df55decb98aff033700384084e1
s390: avoid using global register for current_stack_pointer

Commit 67c42a7dffb4 ("s390: current_stack_pointer shouldn't be a
function") made current_stack_pointer a global register variable like
on many other architectures. Unfortunately on s390 it uncovers old
gcc bug which is fixed only since gcc-9.1 [gcc commit 3ad7fed1cc87
("S/390: Fix PR89775. Stackpointer save/restore instructions removed")]
and backported to gcc-8.4 and later. Due to this bug gcc versions prior
to 8.4 generate broken code which leads to stack corruptions.

Current minimal gcc version required to build the kernel is declared
as 5.1. It is not possible to fix all old gcc versions, so work
around this problem by avoiding using global register variable for
current_stack_pointer.

Fixes: 67c42a7dffb4 ("s390: current_stack_pointer shouldn't be a function")
Reviewed-by: Heiko Carstens <hca@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com>
arch/s390/include/asm/processor.h