mirror of https://gitee.com/openkylin/linux.git
[S390] Kernel stack overflow handling.
Substract the size of the initial stack frame from the correct register. Otherwise we will end up in a program check loop. Fix the offset into the save area as well. Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
This commit is contained in:
parent
6981e936aa
commit
9514e2311b
|
@ -827,7 +827,7 @@ restart_go:
|
|||
*/
|
||||
stack_overflow:
|
||||
lg %r15,__LC_PANIC_STACK # change to panic stack
|
||||
aghi %r1,-SP_SIZE
|
||||
aghi %r15,-SP_SIZE
|
||||
mvc SP_PSW(16,%r15),0(%r12) # move user PSW to stack
|
||||
stmg %r0,%r11,SP_R0(%r15) # store gprs %r0-%r11 to kernel stack
|
||||
la %r1,__LC_SAVE_AREA
|
||||
|
@ -835,7 +835,7 @@ stack_overflow:
|
|||
je 0f
|
||||
chi %r12,__LC_PGM_OLD_PSW
|
||||
je 0f
|
||||
la %r1,__LC_SAVE_AREA+16
|
||||
la %r1,__LC_SAVE_AREA+32
|
||||
0: mvc SP_R12(32,%r15),0(%r1) # move %r12-%r15 to stack
|
||||
xc __SF_BACKCHAIN(8,%r15),__SF_BACKCHAIN(%r15) # clear back chain
|
||||
la %r2,SP_PTREGS(%r15) # load pt_regs
|
||||
|
|
Loading…
Reference in New Issue