Patch "s390/stacktrace: Skip first user stack frame" has been added to the 6.9-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    s390/stacktrace: Skip first user stack frame

to the 6.9-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     s390-stacktrace-skip-first-user-stack-frame.patch
and it can be found in the queue-6.9 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 8902ffeb9eb0fe44de430f6d3f17b1181b0fa298
Author: Heiko Carstens <hca@xxxxxxxxxxxxx>
Date:   Mon Apr 29 14:28:45 2024 +0200

    s390/stacktrace: Skip first user stack frame
    
    [ Upstream commit 87eceb17a987802aeee718be4decd19b56fc8e33 ]
    
    When walking user stack frames the first stack frame (where the stack
    pointer points to) should be skipped: the return address of the current
    function is saved in the previous stack frame, not the current stack frame,
    which is allocated for to be called functions.
    
    Fixes: aa44433ac4ee ("s390: add USER_STACKTRACE support")
    Reviewed-by: Jens Remus <jremus@xxxxxxxxxxxxx>
    Signed-off-by: Heiko Carstens <hca@xxxxxxxxxxxxx>
    Signed-off-by: Alexander Gordeev <agordeev@xxxxxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/arch/s390/kernel/stacktrace.c b/arch/s390/kernel/stacktrace.c
index e580d4cd2729a..1c9e3b7739a22 100644
--- a/arch/s390/kernel/stacktrace.c
+++ b/arch/s390/kernel/stacktrace.c
@@ -95,6 +95,10 @@ void arch_stack_walk_user_common(stack_trace_consume_fn consume_entry, void *coo
 	while (1) {
 		if (__get_user(sp, &sf->back_chain))
 			break;
+		/* Sanity check: ABI requires SP to be 8 byte aligned. */
+		if (!sp || sp & 0x7)
+			break;
+		sf = (void __user *)sp;
 		if (__get_user(ip, &sf->gprs[8]))
 			break;
 		if (ip & 0x1) {
@@ -110,10 +114,6 @@ void arch_stack_walk_user_common(stack_trace_consume_fn consume_entry, void *coo
 		}
 		if (!store_ip(consume_entry, cookie, entry, perf, ip))
 			return;
-		/* Sanity check: ABI requires SP to be aligned 8 bytes. */
-		if (!sp || sp & 0x7)
-			break;
-		sf = (void __user *)sp;
 		first = false;
 	}
 	pagefault_enable();




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux