aboutsummaryrefslogtreecommitdiff
path: root/sys/kern/kern_event.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/kern/kern_event.c')
-rw-r--r--sys/kern/kern_event.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/sys/kern/kern_event.c b/sys/kern/kern_event.c
index 2cf1de9dfe05..4156460552a2 100644
--- a/sys/kern/kern_event.c
+++ b/sys/kern/kern_event.c
@@ -170,8 +170,10 @@ filt_procattach(struct knote *kn)
p = pfind(kn->kn_id);
if (p == NULL)
return (ESRCH);
- if ((error = p_can(curproc, p, P_CAN_SEE, NULL)))
+ if ((error = p_can(curproc, p, P_CAN_SEE, NULL))) {
+ PROC_UNLOCK(p);
return (error);
+ }
kn->kn_ptr.p_proc = p;
kn->kn_flags |= EV_CLEAR; /* automatically set */
@@ -185,7 +187,6 @@ filt_procattach(struct knote *kn)
kn->kn_flags &= ~EV_FLAG1;
}
- PROC_LOCK(p);
SLIST_INSERT_HEAD(&p->p_klist, kn, kn_selnext);
PROC_UNLOCK(p);