Date: Sun, 14 Jun 2009 17:30:44 +0200 (CEST) From: Alexander Best <alexbestms@math.uni-muenster.de> To: Chagin Dmitry <dchagin@freebsd.org> Cc: freebsd-current@freebsd.org Subject: Re: linux syscall get_robust_list causes panic Message-ID: <permail-200906141530441e86ffa80000381d-a_best01@message-id.uni-muenster.de> In-Reply-To: <20090614151717.GA26276@dchagin.static.corbina.ru>
next in thread | previous in thread | raw e-mail | index | archive | help
wow.
thanks for the fix. after applying the patch the panic no longer occurs. great
job! :-) hope this'll make it into CURRENT quickly. ;)
cheers.
Chagin Dmitry schrieb am 2009-06-14:
> On Sun, Jun 14, 2009 at 04:27:45PM +0200, Alexander Best wrote:
> > hi there,
> > i tried to run the latest release (20090531) of the linux test
> > project (ltp)
> > 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.
> > i've attached a screenshot of the panic and the source which is
> > causing the
> > panic. you won't be able to compile it without ltp however. after
> > installing
> > 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.
> > unfortunately i cannot supply a complete bt, because i only own a
> > usb keyboard
> > 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.*?
> 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) ||
> priv_check(td, PRIV_CRED_SETEUID) ||
> - p_candebug(td, p))
> + p_candebug(td, p)) {
> + PROC_UNLOCK(p);
> return (EPERM);
> + }
> head = em->robust_futexes;
> PROC_UNLOCK(p);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?permail-200906141530441e86ffa80000381d-a_best01>
