s390/unwind: use current_frame_address() to unwind current task
current_stack_pointer() simply returns current value of %r15. If current_stack_pointer() caller allocates stack (which is the case in unwind code) %r15 points to a stack frame allocated for callees, meaning current_stack_pointer() caller (e.g. stack_trace_save) will end up in the stacktrace. This is not expected by stack_trace_save*() callers and causes problems. current_frame_address() on the other hand returns function stack frame address, which matches %r15 upon function invocation. Using it in get_stack_pointer() makes it more aligned with x86 implementation (according to BACKTRACE_SELF_TEST output) and meets stack_trace_save*() caller's expectations, notably KCSAN. Also make sure unwind_start is always inlined. Reported-by: NNathan Chancellor <nathan@kernel.org> Suggested-by: NMarco Elver <elver@google.com> Signed-off-by: NVasily Gorbik <gor@linux.ibm.com> Tested-by: NMarco Elver <elver@google.com> Tested-by: NNathan Chancellor <nathan@kernel.org> Link: https://lore.kernel.org/r/patch.git-04dd26be3043.your-ad-here.call-01630504868-ext-6188@work.hoursSigned-off-by: NHeiko Carstens <hca@linux.ibm.com>
Showing
想要评论请 注册 或 登录