]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
s390/traps: Change stack overflow message
authorSven Schnelle <svens@linux.ibm.com>
Thu, 27 Feb 2025 06:49:48 +0000 (07:49 +0100)
committerVasily Gorbik <gor@linux.ibm.com>
Tue, 4 Mar 2025 16:34:03 +0000 (17:34 +0100)
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>
arch/s390/kernel/entry.S
arch/s390/kernel/entry.h
arch/s390/kernel/traps.c

index ea4ddd37ea5a20b8925bad023aca1f6476585eb5..b0c2356697fd3374509795f223eef84146376bc2 100644 (file)
@@ -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
index a1f28879c87e27d3edb3708e1c69ec60fc609445..dd55cc6bbc28fd985f6d5cbf215ecb43471d69f8 100644 (file)
@@ -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);
 
index 18dcc92802644db88807b9e0f51cad30d2c7fbcd..4daa3c76e999163a185153d304f0b90d1cb72a13 100644 (file)
@@ -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)
 {