Date: Sun, 14 Jun 2009 19:17:17 +0400 From: Chagin Dmitry <dchagin@freebsd.org> To: Alexander Best <alexbestms@math.uni-muenster.de> Cc: freebsd-current@freebsd.org Subject: Re: linux syscall get_robust_list causes panic Message-ID: <20090614151717.GA26276@dchagin.static.corbina.ru> In-Reply-To: <permail-20090614142745f7e55a9d00004f58-a_best01@message-id.uni-muenster.de> References: <permail-20090614142745f7e55a9d00004f58-a_best01@message-id.uni-muenster.de>
next in thread | previous in thread | raw e-mail | index | archive | help
--sm4nu43k4a2Rpi4c
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
On Sun, Jun 14, 2009 at 04:27:45PM +0200, Alexander Best wrote:
> hi there,
>=20
> i tried to run the latest release (20090531) of the linux test project (l=
tp)
> with emulators/linux_dist-gentoo-stage3. however the kernel panics after =
ltp's
> get_robust_list(2) test. set_robust_list(2) passes without any problems.
>=20
> i've attached a screenshot of the panic and the source which is causing t=
he
> panic. you won't be able to compile it without ltp however. after install=
ing
> and compiling ltp the source and the executable can be found in
> "/usr/local/gentoo-stage3/ltp-full-20090531/testcases/kernel/syscalls/get=
_robust_list".
> simply running the
> "/usr/local/gentoo-stage3/ltp-full-20090531/testcases/kernel/syscalls/get=
_robust_list/get_robust_list01"
> executable results in a panic.
>=20
> unfortunately i cannot supply a complete bt, because i only own a usb key=
board
> which doesn't respond after the panic. actually i'm a bit surprised the
> debugger was started, because i have "KDB_UNATTENDED" in my kernel conf. =
any
> reason the machine doesn't reboot and save the dump to /var/crash/vmcore.=
*?
>=20
please, try inlined patch.
diff --git a/sys/compat/linux/linux_futex.c b/sys/compat/linux/linux_futex.c
index cb04cd8..0f781fc 100644
--- a/sys/compat/linux/linux_futex.c
+++ b/sys/compat/linux/linux_futex.c
@@ -707,8 +707,10 @@ linux_get_robust_list(struct thread *td, struct linux_=
get_robust_list_args *args
/* XXX: ptrace? */
if (priv_check(td, PRIV_CRED_SETUID) ||=20
priv_check(td, PRIV_CRED_SETEUID) ||
- p_candebug(td, p))
+ p_candebug(td, p)) {
+ PROC_UNLOCK(p);
return (EPERM);
+ }
head =3D em->robust_futexes;
=09
PROC_UNLOCK(p);
--=20
Have fun!
chd
--sm4nu43k4a2Rpi4c
Content-Type: application/pgp-signature
Content-Disposition: inline
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.10 (FreeBSD)
iEYEARECAAYFAko1FHwACgkQ0t2Tb3OO/O37DACfT2a3X+nsrt4tuqEaImv/EFiq
0/wAoLv/C8DJkb5GHNY7/tpEhuPccvRR
=P0zv
-----END PGP SIGNATURE-----
--sm4nu43k4a2Rpi4c--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20090614151717.GA26276>
