mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-01-16 09:53:13 -05:00
s390/stacktrace: Skip first user stack frame
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: aa44433ac4 ("s390: add USER_STACKTRACE support")
Reviewed-by: Jens Remus <jremus@linux.ibm.com>
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com>
This commit is contained in:
committed by
Alexander Gordeev
parent
ebd912ff99
commit
87eceb17a9
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user