[PATCH] Fix powerpc bad_page_fault output (Re: 2.6.16-rc5-mm1)

Paul E. McKenney paulmck at us.ibm.com
Thu Mar 2 11:09:36 EST 2006


On Wed, Mar 01, 2006 at 10:45:31AM -0600, Olof Johansson wrote:
> On Tue, Feb 28, 2006 at 03:56:24PM -0800, Martin Bligh wrote:
> > Andrew Morton wrote:
> > >ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.16-rc5/2.6.16-rc5-mm1/
> > 
> > New panic on IBM power4 lpar of P690. 2.6.16-rc5-git3 is OK.
> > 
> > (config: 
> > http://ftp.kernel.org/pub/linux/kernel/people/mbligh/config/abat/power4)
> > 
> > http://test.kernel.org/24165/debug/console.log
> 
> For what it's worth, this is a NULL pointer dereference in the RCU
> code.

And in an area where it is tougher than usual to blame the problem
on a broken use of RCU, as well.  ;-)

The "rcp" argument to __rcu_process_callbacks() is C00000076F303F08
and "rdp" is C00000076F303F08, or am I mis-remembering the POWER ABI?

						Thanx, Paul

> Seems that the human-readible parts are printed at a differnet printk level
> (well, _at_ a level), so they fell off. Not good.
> 
> Andrew and/or Paulus, see patch below.
> 
> 
> Thanks,
> 
> Olof
> 
> 
> ---
> 
> It seems that the die() output is printk'd without any prink level,
> so some distros will log the register dumps and the human readible
> format differently.
> 
> (I.e. see http://test.kernel.org/24165/debug/console.log, which lacks
> the KERN_ALERT parts)
> 
> Changing the die() output to include a level will likely confuse users
> that currently rely on getting the output where they're getting it,
> so instead remove it from the bad_page_fault() output.
> 
> Signed-off-by: Olof Johansson <olof at lixom.net>
> 
> 
> diff --git a/arch/powerpc/mm/fault.c b/arch/powerpc/mm/fault.c
> index ec4adcb..fee050a 100644
> --- a/arch/powerpc/mm/fault.c
> +++ b/arch/powerpc/mm/fault.c
> @@ -389,7 +389,7 @@ void bad_page_fault(struct pt_regs *regs
>  
>  	/* kernel has accessed a bad area */
>  
> -	printk(KERN_ALERT "Unable to handle kernel paging request for ");
> +	printk("Unable to handle kernel paging request for ");
>  	switch (regs->trap) {
>  		case 0x300:
>  		case 0x380:
> @@ -402,8 +402,7 @@ void bad_page_fault(struct pt_regs *regs
>  		default:
>  			printk("unknown fault\n");
>  	}
> -	printk(KERN_ALERT "Faulting instruction address: 0x%08lx\n",
> -		regs->nip);
> +	printk("Faulting instruction address: 0x%08lx\n", regs->nip);
>  
>  	die("Kernel access of bad area", regs, sig);
>  }
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo at vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/
> 



More information about the Linuxppc64-dev mailing list