s390/entry: Fix last breaking event handling in case of stack corruption
commit ae952eea6f4a7e2193f8721a5366049946e012e7 upstream.
In case of stack corruption stack_invalid() is called and the expectation
is that register r10 contains the last breaking event address. This
dependency is quite subtle and broke a couple of years ago without that
anybody noticed.
Fix this by getting rid of the dependency and read the last breaking event
address from lowcore.
Fixes: 56e62a7370
("s390: convert to generic entry")
Acked-by: Ilya Leoshkevich <iii@linux.ibm.com>
Reviewed-by: Alexander Gordeev <agordeev@linux.ibm.com>
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
56aa7679c9
commit
5f4787834c
@@ -639,7 +639,7 @@ SYM_CODE_START(stack_overflow)
|
|||||||
stmg %r0,%r7,__PT_R0(%r11)
|
stmg %r0,%r7,__PT_R0(%r11)
|
||||||
stmg %r8,%r9,__PT_PSW(%r11)
|
stmg %r8,%r9,__PT_PSW(%r11)
|
||||||
mvc __PT_R8(64,%r11),0(%r14)
|
mvc __PT_R8(64,%r11),0(%r14)
|
||||||
stg %r10,__PT_ORIG_GPR2(%r11) # store last break to orig_gpr2
|
mvc __PT_ORIG_GPR2(8,%r11),__LC_PGM_LAST_BREAK
|
||||||
xc __SF_BACKCHAIN(8,%r15),__SF_BACKCHAIN(%r15)
|
xc __SF_BACKCHAIN(8,%r15),__SF_BACKCHAIN(%r15)
|
||||||
lgr %r2,%r11 # pass pointer to pt_regs
|
lgr %r2,%r11 # pass pointer to pt_regs
|
||||||
jg kernel_stack_overflow
|
jg kernel_stack_overflow
|
||||||
|
Reference in New Issue
Block a user