Message ID | 1587208459-5470-1-git-send-email-wangqing@vivo.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | arm: fixed backtrace when task running on another cpu | expand |
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;
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(+)