summaryrefslogtreecommitdiff
path: root/sys/kern/subr_trap.c
diff options
context:
space:
mode:
authorRobert Watson <rwatson@FreeBSD.org>2002-11-08 19:00:17 +0000
committerRobert Watson <rwatson@FreeBSD.org>2002-11-08 19:00:17 +0000
commit52378b8acd1fd13abecdfa874439930f7760d894 (patch)
treebb1b1d9947625f618e2a321ff0eb85de1e4b9c53 /sys/kern/subr_trap.c
parent7593f63c911eee0a9b9ecfc02b1dc91ccba33c7e (diff)
Notes
Diffstat (limited to 'sys/kern/subr_trap.c')
-rw-r--r--sys/kern/subr_trap.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/sys/kern/subr_trap.c b/sys/kern/subr_trap.c
index 9f8bed0aa85a..61052d327b8d 100644
--- a/sys/kern/subr_trap.c
+++ b/sys/kern/subr_trap.c
@@ -90,10 +90,6 @@ userret(td, frame, oticks)
mtx_unlock(&Giant);
#endif
-#ifdef MAC
- mac_thread_userret(td);
-#endif
-
/*
* Let the scheduler adjust our priority etc.
*/
@@ -184,6 +180,9 @@ ast(struct trapframe *framep)
flags = ke->ke_flags;
sflag = p->p_sflag;
p->p_sflag &= ~(PS_ALRMPEND | PS_NEEDSIGCHK | PS_PROFPEND | PS_XCPU);
+#ifdef MAC
+ p->p_sflag &= ~PS_MACPEND;
+#endif
ke->ke_flags &= ~(KEF_ASTPENDING | KEF_NEEDRESCHED | KEF_OWEUPC);
cnt.v_soft++;
prticks = 0;
@@ -238,6 +237,10 @@ ast(struct trapframe *framep)
}
PROC_UNLOCK(p);
}
+#ifdef MAC
+ if (sflag & PS_MACPEND)
+ mac_thread_userret(td);
+#endif
if (flags & KEF_NEEDRESCHED) {
mtx_lock_spin(&sched_lock);
sched_prio(td, kg->kg_user_pri);