diff options
author | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2021-11-18 13:15:35 +0100 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2021-11-18 14:01:34 +0100 |
commit | b51c1a592faaf114b33f56f25aec757d21a826e0 (patch) | |
tree | 8befa942be59bb90916857fc625abe71a14d27dc | |
parent | 0e62c60b3e7e0cb6ef4679e9da31709ac68918e9 (diff) |
Revert "x86: Fix __get_wchan() for !STACKTRACE"
This reverts commit e1ff40b6194f09c1dd0f45b94fdf30c0374b5823 which is
commit 5d1ceb3969b6b2e47e2df6d17790a7c5a20fcbb4 upstream.
It has been reported to be causing problems, and is being reworked
upstream and has been dropped from the current 5.15.y stable queue until
it gets resolved.
Reported-by: Chris Rankin <rankincj@gmail.com>
Reported-by: Thorsten Leemhuis <linux@leemhuis.info>
Link: https://lore.kernel.org/r/ed000478-2a60-0066-c337-a04bffc112b1@leemhuis.info
Cc: Stephen Rothwell <sfr@canb.auug.org.au>
Cc: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: Kees Cook <keescook@chromium.org>
Cc: Sasha Levin <sashal@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r-- | arch/x86/kernel/process.c | 17 |
1 files changed, 3 insertions, 14 deletions
diff --git a/arch/x86/kernel/process.c b/arch/x86/kernel/process.c index 2fe1810e922a9..266962547b58c 100644 --- a/arch/x86/kernel/process.c +++ b/arch/x86/kernel/process.c @@ -43,7 +43,6 @@ #include <asm/io_bitmap.h> #include <asm/proto.h> #include <asm/frame.h> -#include <asm/unwind.h> #include "process.h" @@ -946,20 +945,10 @@ unsigned long arch_randomize_brk(struct mm_struct *mm) */ unsigned long __get_wchan(struct task_struct *p) { - struct unwind_state state; - unsigned long addr = 0; + unsigned long entry = 0; - for (unwind_start(&state, p, NULL, NULL); !unwind_done(&state); - unwind_next_frame(&state)) { - addr = unwind_get_return_address(&state); - if (!addr) - break; - if (in_sched_functions(addr)) - continue; - break; - } - - return addr; + stack_trace_save_tsk(p, &entry, 1, 0); + return entry; } long do_arch_prctl_common(struct task_struct *task, int option, |