Date: Wed, 23 Mar 2005 21:42:19 -0800 From: Brooks Davis <brooks@one-eyed-alien.net> To: John Baldwin <jhb@freebsd.org> Cc: "Wilkinson, Alex" <alex.wilkinson@dsto.defence.gov.au> Subject: Re: sys/modules/linux/linux_ioctl.o - LOR [I think] Message-ID: <20050324054219.GC32114@odin.ac.hmc.edu> In-Reply-To: <200503231546.40408.jhb@FreeBSD.org> References: <20050302020453.GE55745@squash.dsto.defence.gov.au> <200503231546.40408.jhb@FreeBSD.org>
next in thread | previous in thread | raw e-mail | index | archive | help
--KN5l+BnMqAQyZLvT Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable 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 =3D 0x283bf2a4, esp =3D > > 0xbfbf8ed0, ebp =3D 0xbfbf8f80 --- Calling uiomove() with the following > > non-sleepable locks held: > > exclusive sleep mutex ifnet r =3D 0 (0xc09b8ea0) locked @ > > /usr/src/sys/modules/linux/../../compat/linux/linux_ioctl.c:2135 KDB: s= tack > > 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 =3D 0x283bf2a4, esp =3D > > 0xbfbfd290, ebp =3D 0xbfbfd300 --- Calling uiomove() with the following > > non-sleepable locks held: > > exclusive sleep mutex ifnet r =3D 0 (0xc09b8ea0) locked @ > > /usr/src/sys/modules/linux/../../compat/linux/linux_ioctl.c:2135 KDB: s= tack > > 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 =3D 0x283bf2a4, esp =3D > > 0xbfbfd290, ebp =3D 0xbfbfd300 --- >=20 > Definitely a bug. The linux_ioctl() code needs to unlock the ifnet lock= =20 > before it calls uiomove() unless it knows for certain that it is talking = to=20 > 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 --=20 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 --KN5l+BnMqAQyZLvT Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.1 (GNU/Linux) iD8DBQFCQlJ/XY6L6fI4GtQRAkjTAKCdIF5kxZRzx6VSBppBqvRh9+T5qwCdHHTg Wcz23r1SwvNfHMzaBpXRC1M= =X6Au -----END PGP SIGNATURE----- --KN5l+BnMqAQyZLvT--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20050324054219.GC32114>