Re: linux syscall get_robust_list causes panic

From: Chagin Dmitry <dchagin_at_freebsd.org>
Date: Sun, 14 Jun 2009 19:17:17 +0400
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
_at__at_ -707,8 +707,10 _at__at_ 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);


-- 
Have fun!
chd

Received on Sun Jun 14 2009 - 13:34:49 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:49 UTC