Messages in this thread Patch in this message | | | From | Wang Qing <> | Subject | [PATCH] arm: fixed backtrace when task running on another cpu | Date | Sat, 18 Apr 2020 19:14:18 +0800 |
| |
We cannot get FP when the task is currently running on another CPU, in this case, current stack is printed instead of the task. Also, thread_saved_fp() is the last time the task was switched out, we should not use too.
Signed-off-by: Wang Qing <wangqing@vivo.com> --- arch/arm/kernel/traps.c | 3 +++ 1 file changed, 3 insertions(+)
diff --git a/arch/arm/kernel/traps.c b/arch/arm/kernel/traps.c index 1e70e72..24e860a 100644 --- a/arch/arm/kernel/traps.c +++ b/arch/arm/kernel/traps.c @@ -222,6 +222,9 @@ static void dump_backtrace(struct pt_regs *regs, struct task_struct *tsk) } else if (tsk != current) { fp = thread_saved_fp(tsk); mode = 0x10; + } else if (task_curr(tsk)) + pr_info("tsk is running on another CPU, not trace!\n"); + fp = 0; } else { asm("mov %0, fp" : "=r" (fp) : : "cc"); mode = 0x10; -- 2.7.4
| |