svn commit: r284600 - head/sys/dev/filemon

Simon J. Gerraty sjg at FreeBSD.org
Fri Jun 19 17:19:21 UTC 2015


Author: sjg
Date: Fri Jun 19 17:19:20 2015
New Revision: 284600
URL: https://svnweb.freebsd.org/changeset/base/284600

Log:
  filemon_pid_check needs to hold proctree_lock
  
  Reviewed by:	kib
  MFC after:	few days

Modified:
  head/sys/dev/filemon/filemon_wrapper.c

Modified: head/sys/dev/filemon/filemon_wrapper.c
==============================================================================
--- head/sys/dev/filemon/filemon_wrapper.c	Fri Jun 19 17:00:36 2015	(r284599)
+++ head/sys/dev/filemon/filemon_wrapper.c	Fri Jun 19 17:19:20 2015	(r284600)
@@ -28,6 +28,8 @@
 #include <sys/cdefs.h>
 __FBSDID("$FreeBSD$");
 
+#include <sys/sx.h>
+
 #include "opt_compat.h"
 
 #if __FreeBSD_version > 800032
@@ -84,13 +86,17 @@ filemon_pid_check(struct proc *p)
 {
 	struct filemon *filemon;
 
-	while (p->p_pptr) {
+	sx_slock(&proctree_lock);
+	while (p != initproc) {
 		TAILQ_FOREACH(filemon, &filemons_inuse, link) {
-			if (p->p_pid == filemon->pid)
+			if (p->p_pid == filemon->pid) {
+				sx_xunlock(&proctree_lock);
 				return (filemon);
+			}
 		}
-		p = p->p_pptr;
+		p = proc_realparent(p);
 	}
+	sx_xunlock(&proctree_lock);
 	return (NULL);
 }
 


More information about the svn-src-head mailing list