sys/modules/linux/linux_ioctl.o - LOR [I think]

Brooks Davis brooks at one-eyed-alien.net
Wed Mar 23 21:42:22 PST 2005


On Wed, Mar 23, 2005 at 03:46:40PM -0500, John Baldwin wrote:
> On Tuesday 01 March 2005 09:04 pm, Wilkinson, Alex wrote:
> > Version: FreeBSD 6.0-CURRENT #1: Tue Feb 22 12:47:37 CST 2005
> >
> > Seeing these error on console:
> >
> >   --- syscall (54, Linux ELF, linux_ioctl), eip = 0x283bf2a4, esp =
> > 0xbfbf8ed0, ebp = 0xbfbf8f80 --- Calling uiomove() with the following
> > non-sleepable locks held:
> >    exclusive sleep mutex ifnet r = 0 (0xc09b8ea0) locked @
> > /usr/src/sys/modules/linux/../../compat/linux/linux_ioctl.c:2135 KDB: stack
> > backtrace:
> >    witness_warn(2,0,c08a71b8,ec80fbec,0) at witness_warn+0x175
> >    uiomove(ec80fc64,20,ec80fc44,0,1) at uiomove+0x4d
> >    linux_ioctl_socket(c6b52000,ec80fd14,ec80fcd0,c08aa46e,68d) at
> > linux_ioctl_socket+0x8f4 linux_ioctl(c6b52000,ec80fd14,c08c8f72,3ad,3) at
> > linux_ioctl+0x69 syscall(2f,2f,2f,bfbfd36c,4) at syscall+0x13b
> >    Xint0x80_syscall() at Xint0x80_syscall+0x1f
> >    --- syscall (54, Linux ELF, linux_ioctl), eip = 0x283bf2a4, esp =
> > 0xbfbfd290, ebp = 0xbfbfd300 --- Calling uiomove() with the following
> > non-sleepable locks held:
> >    exclusive sleep mutex ifnet r = 0 (0xc09b8ea0) locked @
> > /usr/src/sys/modules/linux/../../compat/linux/linux_ioctl.c:2135 KDB: stack
> > backtrace:
> >    witness_warn(2,0,c08a71b8,0,0) at witness_warn+0x175
> >    uiomove(ec80fc64,20,ec80fc44,0,1) at uiomove+0x4d
> >    linux_ioctl_socket(c6b52000,ec80fd14,ec80fcd0,c08aa46e,68d) at
> >    linux_ioctl_socket+0x8f4
> >    linux_ioctl(c6b52000,ec80fd14,c08c8f72,3ad,3) at linux_ioctl+0x69
> >    syscall(2f,2f,2f,bfbfd36c,4) at syscall+0x13b
> >    Xint0x80_syscall() at Xint0x80_syscall+0x1f
> >    --- syscall (54, Linux ELF, linux_ioctl), eip = 0x283bf2a4, esp =
> > 0xbfbfd290, ebp = 0xbfbfd300 ---
> 
> Definitely a bug.  The linux_ioctl() code needs to unlock the ifnet lock 
> before it calls uiomove() unless it knows for certain that it is talking to 
> UIO_SYSSPACE.

Hmm, it looks like this stack trace is wrong.  The only uiomove call in
linux_ioctl.c is in linux_ifconf which is in fact broken.  The solution
here is almost certaintly to adapt the ifconf code I wrote to fix the LOR
in the native version.

-- Brooks

-- 
Any statement of the form "X is the one, true Y" is FALSE.
PGP fingerprint 655D 519C 26A7 82E7 2529  9BF0 5D8E 8BE9 F238 1AD4
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-current/attachments/20050323/d8614448/attachment.bin


More information about the freebsd-current mailing list