svn commit: r239587 - head/sys/kern

Andriy Gapon avg at FreeBSD.org
Wed Sep 5 06:49:58 UTC 2012


on 22/08/2012 23:02 John Baldwin said the following:
> Author: jhb
> Date: Wed Aug 22 20:02:42 2012
> New Revision: 239587
> URL: http://svn.freebsd.org/changeset/base/239587
> 
> Log:
>   Assert that system calls do not leak a pinned thread (via sched_pin()) to
>   userland.
> 
> Modified:
>   head/sys/kern/subr_syscall.c
> 
> Modified: head/sys/kern/subr_syscall.c
> ==============================================================================
> --- head/sys/kern/subr_syscall.c	Wed Aug 22 20:01:57 2012	(r239586)
> +++ head/sys/kern/subr_syscall.c	Wed Aug 22 20:02:42 2012	(r239587)
> @@ -188,6 +188,9 @@ syscallret(struct thread *td, int error,

I wonder if userret() would be a better place for this assert as well as the
asserts that were already there.  userret seems to cover more cases and includes
the syscallret case.

>  	KASSERT((td->td_pflags & TDP_NOSLEEPING) == 0,
>  	    ("System call %s returning with sleep disabled",
>  	     syscallname(p, sa->code)));
> +	KASSERT(td->td_pinned == 0,
> +	    ("System call %s returning with pinned thread",
> +	     syscallname(p, sa->code)));
>  
>  	/*
>  	 * Handle reschedule and other end-of-syscall issues
> 


-- 
Andriy Gapon


More information about the svn-src-head mailing list