Subject: Re: [PATCH] powerpc: fix support for latencytop

From: Benjamin Herrenschmidt <[email-masked]>
Date: Thu, 17 Jul 2008 08:28:00 +1000

On Thu, 2008-07-17 at 00:12 +0200, Arnd Bergmann wrote:
> We need to pass the kernel stack pointer instead of the user space
> stack pointer in save_stack_trace_tsk().
> 
> Signed-off-by: Arnd Bergmann <[email-masked]>
> 
> On Wednesday 16 July 2008, Nathan Lynch wrote:
> > Arnd Bergmann wrote:
> > > Implement save_stack_trace_tsk on powerpc, so that we can run with
> > > latencytop.
> > 
> > So I tried latencytop with linux-next and got the following oops, but
> > I didn't really look into it yet.
> 
> Oh, I didn't even realize that benh had merged that patch of mine.
> As I wrote in the description, it was entirely untested. You found
> another obvious bug: The code was passing the user space stack
> pointer instead of the kernel stack pointer.
> 
> Again, this patch is entirely untested, and I would not be at all
> surprised to find other trivial bugs.

I missed that part of your description and it didn't seem to break the
kernel stack trace so ... :-) It's a nice feature to have and bugs can
be fixed before release.

Now we should probably look at making the stacktrace code a bit more
robust vs. wild pointers anyway.

> --- a/arch/powerpc/kernel/stacktrace.c
> +++ b/arch/powerpc/kernel/stacktrace.c
> @@ -59,6 +59,6 @@ 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.regs->gpr[1], tsk, 0);
> +	save_context_stack(trace, tsk->thread.ksp, tsk, 0);
>  }
>  EXPORT_SYMBOL_GPL(save_stack_trace_tsk);