powerpc: Make /proc/self/stack always print the current stack
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. Otherwise, every once in a while, the stacktrace printed when reading /proc/self/stack would look like the process is running in userspace, while it's not, which some may consider as a bug. This is also consistent with some other architectures, like x86 and arm, at least. Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@canonical.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
This commit is contained in:
parent
5511a45fc1
commit
4f9b514b76
@ -59,7 +59,14 @@ EXPORT_SYMBOL_GPL(save_stack_trace);
|
|||||||
|
|
||||||
void save_stack_trace_tsk(struct task_struct *tsk, struct stack_trace *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;
|
||||||
|
|
||||||
|
if (tsk == current)
|
||||||
|
sp = current_stack_pointer();
|
||||||
|
else
|
||||||
|
sp = tsk->thread.ksp;
|
||||||
|
|
||||||
|
save_context_stack(trace, sp, tsk, 0);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(save_stack_trace_tsk);
|
EXPORT_SYMBOL_GPL(save_stack_trace_tsk);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user