diff options
author | jhb <jhb@FreeBSD.org> | 2013-08-13 18:45:58 +0000 |
---|---|---|
committer | jhb <jhb@FreeBSD.org> | 2013-08-13 18:45:58 +0000 |
commit | 71208457122de84cfb4b62db95eaa32a001acb2c (patch) | |
tree | 9e69c90986e7318260367a1b71a8817f26b805bb | |
parent | 14b4517fa3de42913ad6f68527f43b5144a01918 (diff) | |
download | FreeBSD-src-71208457122de84cfb4b62db95eaa32a001acb2c.zip FreeBSD-src-71208457122de84cfb4b62db95eaa32a001acb2c.tar.gz |
Some small cleanups to the fixes in r180340:
- Set NOTE_TRACKERR before running filt_proc(). If the knote did not
have NOTE_FORK set in fflags when registered, then the TRACKERR event
could miss being posted.
- Don't pass the pid in to filt_proc() for NOTE_FORK events. The special
handling for pids is done knote_fork() directly and no longer in
filt_proc().
MFC after: 2 weeks
-rw-r--r-- | sys/kern/kern_event.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/sys/kern/kern_event.c b/sys/kern/kern_event.c index e249e7c..48e0905 100644 --- a/sys/kern/kern_event.c +++ b/sys/kern/kern_event.c @@ -477,7 +477,7 @@ knote_fork(struct knlist *list, int pid) */ if ((kn->kn_sfflags & NOTE_TRACK) == 0) { kn->kn_status |= KN_HASKQLOCK; - if (kn->kn_fop->f_event(kn, NOTE_FORK | pid)) + if (kn->kn_fop->f_event(kn, NOTE_FORK)) KNOTE_ACTIVATE(kn, 1); kn->kn_status &= ~KN_HASKQLOCK; KQ_UNLOCK(kq); @@ -505,10 +505,10 @@ knote_fork(struct knlist *list, int pid) kev.data = kn->kn_id; /* parent */ kev.udata = kn->kn_kevent.udata;/* preserve udata */ error = kqueue_register(kq, &kev, NULL, 0); - if (kn->kn_fop->f_event(kn, NOTE_FORK | pid)) - KNOTE_ACTIVATE(kn, 0); if (error) kn->kn_fflags |= NOTE_TRACKERR; + if (kn->kn_fop->f_event(kn, NOTE_FORK)) + KNOTE_ACTIVATE(kn, 0); KQ_LOCK(kq); kn->kn_status &= ~KN_INFLUX; KQ_UNLOCK_FLUX(kq); |