]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
Revert "x86: Fix __get_wchan() for !STACKTRACE"
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 18 Nov 2021 12:15:35 +0000 (13:15 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 18 Nov 2021 13:01:34 +0000 (14:01 +0100)
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>
arch/x86/kernel/process.c

index 2fe1810e922a9f1074f08456b3cdf7d8e1086cbe..266962547b58c96c8c09afd1d5d69038e258ec3c 100644 (file)
@@ -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,