Message ID | 20170317155921.24369-1-cascardo@canonical.com (mailing list archive) |
---|---|
State | Superseded, archived |
Headers | show |
Thadeu Lima de Souza Cascardo <cascardo@canonical.com> writes: > For the current task, the kernel stack would only tell the last time the > process was rescheduled, if ever. Use the current stack pointer for the > current task. You say "fix" in the subject, but is it a bug, or just an enhancement? > This is also consistent with some other architectures. Such as .. arm64 and x86 (though it's buried in the unwind code). > diff --git a/arch/powerpc/kernel/stacktrace.c b/arch/powerpc/kernel/stacktrace.c > index 6671195..2446066 100644 > --- a/arch/powerpc/kernel/stacktrace.c > +++ b/arch/powerpc/kernel/stacktrace.c > @@ -59,7 +59,12 @@ EXPORT_SYMBOL_GPL(save_stack_trace); > > void save_stack_trace_tsk(struct task_struct *tsk, struct stack_trace *trace) > { > - save_context_stack(trace, tsk->thread.ksp, tsk, 0); > + unsigned long sp = tsk->thread.ksp; > + > + if (tsk == current) > + sp = current_stack_pointer(); else sp = tsk->thread.ksp; Would be clearer IMHO. > + > + save_context_stack(trace, sp, tsk, 0); > } > EXPORT_SYMBOL_GPL(save_stack_trace_tsk); > > -- > 2.9.3 cheers
diff --git a/arch/powerpc/kernel/stacktrace.c b/arch/powerpc/kernel/stacktrace.c index 6671195..2446066 100644 --- a/arch/powerpc/kernel/stacktrace.c +++ b/arch/powerpc/kernel/stacktrace.c @@ -59,7 +59,12 @@ EXPORT_SYMBOL_GPL(save_stack_trace); void save_stack_trace_tsk(struct task_struct *tsk, struct stack_trace *trace) { - save_context_stack(trace, tsk->thread.ksp, tsk, 0); + unsigned long sp = tsk->thread.ksp; + + if (tsk == current) + sp = current_stack_pointer(); + + save_context_stack(trace, sp, tsk, 0); } EXPORT_SYMBOL_GPL(save_stack_trace_tsk);
For the current task, the kernel stack would only tell the last time the process was rescheduled, if ever. Use the current stack pointer for the current task. This is also consistent with some other architectures. Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@canonical.com> --- arch/powerpc/kernel/stacktrace.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)