Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 6 Nov 2013 20:58:04 +0000 (UTC)
From:      John Baldwin <jhb@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org
Subject:   svn commit: r257763 - stable/9/sys/kern
Message-ID:  <201311062058.rA6Kw4pr041690@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jhb
Date: Wed Nov  6 20:58:04 2013
New Revision: 257763
URL: http://svnweb.freebsd.org/changeset/base/257763

Log:
  MFC 254287: 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().

Modified:
  stable/9/sys/kern/kern_event.c
Directory Properties:
  stable/9/sys/   (props changed)

Modified: stable/9/sys/kern/kern_event.c
==============================================================================
--- stable/9/sys/kern/kern_event.c	Wed Nov  6 19:47:23 2013	(r257762)
+++ stable/9/sys/kern/kern_event.c	Wed Nov  6 20:58:04 2013	(r257763)
@@ -475,7 +475,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);
@@ -503,10 +503,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);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201311062058.rA6Kw4pr041690>