Port-amd64 archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Frequent kernel panic with compat_linux module



On Sat, Dec 13, 2008 at 01:54:51PM +0000, Andrew Doran wrote:
> On Wed, Dec 10, 2008 at 10:31:36PM +0000, David Laight wrote:
> 
> > On Wed, Dec 10, 2008 at 01:35:26AM +0100, Nicolas Joly wrote:
> > > 
> > >         l->l_sysent = sy;
> > >         error = (*sy->sy_call)(l, uap, rval);
> > >     ca2f:       48 89 e2                mov    %rsp,%rdx
> > >     ca32:       48 89 ab 08 03 00 00    mov    %rbp,0x308(%rbx)
> > >     ca39:       4c 89 e6                mov    %r12,%rsi
> > >     ca3c:       48 89 df                mov    %rbx,%rdi
> > >     ca3f:       ff 55 08                callq  *0x8(%rbp)
> > >         l->l_sysent = NULL;
> > >     ca42:       48 c7 83 08 03 00 00    movq   $0x0,0x308(%rbx)   <----
> > >     ca49:       00 00 00 00 
> > 
> > Well, %rbx is supposed to be caller-saved and must have been valid
> > at address ca32.  So something must be trashing it!
> > 
> > Did you work out which system call(s) were active?
> 
> You could try increasing the size of rval[] and the argument array to see if
> that works around it - at least then you have somewhere to start looking. In
> combination with the syscall number it should not be hard too find it.

Thanks for the tip ...

Unfortunately both increasing rval from 2 to 20 members, and using an
array of 60 entries for args does not make any difference. Just like
both kernel and modules compiled with stack smashing protection
(USE_SSP=yes) ...

-- 
Nicolas Joly

Biological Software and Databanks.
Institut Pasteur, Paris.


Home | Main Index | Thread Index | Old Index