mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-11-01 09:13:37 +00:00
s390/traps: Change stack overflow message
When the kernel stack pointer is pointing to invalid memory, a 'Kernel stack overflow' message is printed, which is misleading. Change the message to actually say that the stack pointer is invalid instead. Reviewed-by: Heiko Carstens <hca@linux.ibm.com> Signed-off-by: Sven Schnelle <svens@linux.ibm.com> Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
This commit is contained in:
parent
a9f24559d8
commit
f740a8b4df
3 changed files with 11 additions and 11 deletions
|
|
@ -68,7 +68,7 @@ _LPP_OFFSET = __LC_LPP
|
|||
clg %r14,__LC_RESTART_STACK(\lowcore)
|
||||
je \oklabel
|
||||
la %r14,\savearea(\lowcore)
|
||||
j stack_overflow
|
||||
j stack_invalid
|
||||
.endm
|
||||
|
||||
/*
|
||||
|
|
@ -316,7 +316,7 @@ SYM_CODE_START(pgm_check_handler)
|
|||
tm __LC_PGM_ILC+3(%r13),0x80 # check for per exception
|
||||
jnz .Lpgm_svcper # -> single stepped svc
|
||||
2: aghi %r15,-(STACK_FRAME_OVERHEAD + __PT_SIZE)
|
||||
# CHECK_VMAP_STACK branches to stack_overflow or 4f
|
||||
# CHECK_VMAP_STACK branches to stack_invalid or 4f
|
||||
CHECK_VMAP_STACK __LC_SAVE_AREA,%r13,4f
|
||||
3: lg %r15,__LC_KERNEL_STACK(%r13)
|
||||
4: la %r11,STACK_FRAME_OVERHEAD(%r15)
|
||||
|
|
@ -591,11 +591,11 @@ SYM_CODE_END(early_pgm_check_handler)
|
|||
.section .kprobes.text, "ax"
|
||||
|
||||
/*
|
||||
* The synchronous or the asynchronous stack overflowed. We are dead.
|
||||
* The synchronous or the asynchronous stack pointer is invalid. We are dead.
|
||||
* No need to properly save the registers, we are going to panic anyway.
|
||||
* Setup a pt_regs so that show_trace can provide a good call trace.
|
||||
*/
|
||||
SYM_CODE_START(stack_overflow)
|
||||
SYM_CODE_START(stack_invalid)
|
||||
GET_LC %r15
|
||||
lg %r15,__LC_NODAT_STACK(%r15) # change to panic stack
|
||||
la %r11,STACK_FRAME_OVERHEAD(%r15)
|
||||
|
|
@ -605,8 +605,8 @@ SYM_CODE_START(stack_overflow)
|
|||
stg %r10,__PT_ORIG_GPR2(%r11) # store last break to orig_gpr2
|
||||
xc __SF_BACKCHAIN(8,%r15),__SF_BACKCHAIN(%r15)
|
||||
lgr %r2,%r11 # pass pointer to pt_regs
|
||||
jg kernel_stack_overflow
|
||||
SYM_CODE_END(stack_overflow)
|
||||
jg kernel_stack_invalid
|
||||
SYM_CODE_END(stack_invalid)
|
||||
|
||||
.section .data, "aw"
|
||||
.balign 4
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ void do_secure_storage_access(struct pt_regs *regs);
|
|||
void do_non_secure_storage_access(struct pt_regs *regs);
|
||||
void do_secure_storage_violation(struct pt_regs *regs);
|
||||
void do_report_trap(struct pt_regs *regs, int si_signo, int si_code, char *str);
|
||||
void kernel_stack_overflow(struct pt_regs * regs);
|
||||
void kernel_stack_invalid(struct pt_regs *regs);
|
||||
void handle_signal32(struct ksignal *ksig, sigset_t *oldset,
|
||||
struct pt_regs *regs);
|
||||
|
||||
|
|
|
|||
|
|
@ -236,7 +236,7 @@ static void monitor_event_exception(struct pt_regs *regs)
|
|||
}
|
||||
}
|
||||
|
||||
void kernel_stack_overflow(struct pt_regs *regs)
|
||||
void kernel_stack_invalid(struct pt_regs *regs)
|
||||
{
|
||||
/*
|
||||
* Normally regs are unpoisoned by the generic entry code, but
|
||||
|
|
@ -244,12 +244,12 @@ void kernel_stack_overflow(struct pt_regs *regs)
|
|||
*/
|
||||
kmsan_unpoison_entry_regs(regs);
|
||||
bust_spinlocks(1);
|
||||
pr_emerg("Kernel stack overflow\n");
|
||||
pr_emerg("Kernel stack pointer invalid\n");
|
||||
show_regs(regs);
|
||||
bust_spinlocks(0);
|
||||
panic("Corrupt kernel stack, cannot continue");
|
||||
panic("Invalid kernel stack pointer, cannot continue");
|
||||
}
|
||||
NOKPROBE_SYMBOL(kernel_stack_overflow);
|
||||
NOKPROBE_SYMBOL(kernel_stack_invalid);
|
||||
|
||||
static void __init test_monitor_call(void)
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue