summaryrefslogtreecommitdiffstats
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.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/sys/kern/kern_event.c b/sys/kern/kern_event.c
index 8d5345d..a9e42de 100644
--- a/sys/kern/kern_event.c
+++ b/sys/kern/kern_event.c
@@ -387,6 +387,7 @@ kqueue(struct thread *td, struct kqueue_args *uap)
error = falloc(td, &fp, &fd);
if (error)
goto done2;
+ /* An extra reference on `nfp' has been held for us by falloc(). */
kq = malloc(sizeof(struct kqueue), M_KQUEUE, M_WAITOK | M_ZERO);
TAILQ_INIT(&kq->kq_head);
FILE_LOCK(fp);
@@ -396,6 +397,7 @@ kqueue(struct thread *td, struct kqueue_args *uap)
TAILQ_INIT(&kq->kq_head);
fp->f_data = kq;
FILE_UNLOCK(fp);
+ fdrop(fp, td);
FILEDESC_LOCK(fdp);
td->td_retval[0] = fd;
if (fdp->fd_knlistsize < 0)
OpenPOWER on IntegriCloud