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 <zh...@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) + _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev