diff options
author | Konstantin Belousov <kib@FreeBSD.org> | 2012-05-30 13:44:42 +0000 |
---|---|---|
committer | Konstantin Belousov <kib@FreeBSD.org> | 2012-05-30 13:44:42 +0000 |
commit | 6c5d7af15876d2b93e677311018d35f0dd7420db (patch) | |
tree | 8014c8f0357453aac8d34ccf0ab4651881a8bbb4 /sys/kern/subr_syscall.c | |
parent | 0cdf461105452fa9e8868858f56cac7eca9405ab (diff) | |
download | src-6c5d7af15876d2b93e677311018d35f0dd7420db.tar.gz src-6c5d7af15876d2b93e677311018d35f0dd7420db.zip |
Assert that TDP_NOFAULTING and TDP_NOSPEEPING thread flags do not leak
when thread returns from a syscall to usermode.
Tested by: pho
MFC after: 1 week
Notes
Notes:
svn path=/head/; revision=236309
Diffstat (limited to 'sys/kern/subr_syscall.c')
-rw-r--r-- | sys/kern/subr_syscall.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/sys/kern/subr_syscall.c b/sys/kern/subr_syscall.c index 5b485959370d..5aee684285b9 100644 --- a/sys/kern/subr_syscall.c +++ b/sys/kern/subr_syscall.c @@ -182,6 +182,12 @@ syscallret(struct thread *td, int error, struct syscall_args *sa __unused) KASSERT(td->td_locks == 0, ("System call %s returning with %d locks held", syscallname(p, sa->code), td->td_locks)); + KASSERT((td->td_pflags & TDP_NOFAULTING) == 0, + ("System call %s returning with pagefaults disabled", + syscallname(p, sa->code))); + KASSERT((td->td_pflags & TDP_NOSLEEPING) == 0, + ("System call %s returning with sleep disabled", + syscallname(p, sa->code))); /* * Handle reschedule and other end-of-syscall issues |