[PATCH] powerpc: Fix MAX_STACK_TRACE_ENTRIES too low warning again
Li Zhong
zhong at linux.vnet.ibm.com
Tue May 7 18:29:24 EST 2013
On Tue, 2013-05-07 at 10:32 +0800, Li Zhong wrote:
> Saw this warning again, and this time from the ret_from_fork path.
>
> It seems we could clear the back chain earlier in copy_thread(), which
> could cover both path, and also fix potential lockdep usage in
> schedule_tail(), or exception occurred before we clear the back chain.
Sorry, I made some mistake, please ignore this patch...
It seems clearing the back chain shouldn't use kregs->gpr[1] below, it
should be ((unsigned long*)sp)[0]. I'll send an updated version.
Thanks, Zhong
>
> Signed-off-by: Li Zhong <zhong at linux.vnet.ibm.com>
> ---
> arch/powerpc/kernel/entry_32.S | 2 --
> arch/powerpc/kernel/entry_64.S | 2 --
> arch/powerpc/kernel/process.c | 1 +
> 3 files changed, 1 insertions(+), 4 deletions(-)
>
> diff --git a/arch/powerpc/kernel/entry_32.S b/arch/powerpc/kernel/entry_32.S
> index e514de5..d22e73e 100644
> --- a/arch/powerpc/kernel/entry_32.S
> +++ b/arch/powerpc/kernel/entry_32.S
> @@ -439,8 +439,6 @@ ret_from_fork:
> ret_from_kernel_thread:
> REST_NVGPRS(r1)
> bl schedule_tail
> - li r3,0
> - stw r3,0(r1)
> mtlr r14
> mr r3,r15
> PPC440EP_ERR42
> diff --git a/arch/powerpc/kernel/entry_64.S b/arch/powerpc/kernel/entry_64.S
> index 3fe5259..48e8a86 100644
> --- a/arch/powerpc/kernel/entry_64.S
> +++ b/arch/powerpc/kernel/entry_64.S
> @@ -376,8 +376,6 @@ _GLOBAL(ret_from_fork)
> _GLOBAL(ret_from_kernel_thread)
> bl .schedule_tail
> REST_NVGPRS(r1)
> - li r3,0
> - std r3,0(r1)
> ld r14, 0(r14)
> mtlr r14
> mr r3,r15
> diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c
> index ceb4e7b..2c9fc5e 100644
> --- a/arch/powerpc/kernel/process.c
> +++ b/arch/powerpc/kernel/process.c
> @@ -973,6 +973,7 @@ int copy_thread(unsigned long clone_flags, unsigned long usp,
> */
> sp -= sizeof(struct pt_regs);
> kregs = (struct pt_regs *) sp;
> + kregs->gpr[1] = 0;
> sp -= STACK_FRAME_OVERHEAD;
> p->thread.ksp = sp;
> p->thread.ksp_limit = (unsigned long)task_stack_page(p) +
More information about the Linuxppc-dev
mailing list