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);
 }
 
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to