linux syscall get_robust_list causes panic

Alexander Best alexbestms at math.uni-muenster.de
Sun Jun 14 15:30:47 UTC 2009


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);




More information about the freebsd-current mailing list