Author: kib
Date: Sun Feb  3 21:31:40 2019
New Revision: 343724
URL: https://svnweb.freebsd.org/changeset/base/343724

Log:
  Do not call PHOLD() while owning the allproc_lock sx.
  
  Otherwise the lock might recurse in faultin() if the process is
  swapped out.
  
  Reported by:  zeising
  Sponsored by: The FreeBSD Foundation
  MFC after:    1 week

Modified:
  head/sys/kern/kern_proc.c

Modified: head/sys/kern/kern_proc.c
==============================================================================
--- head/sys/kern/kern_proc.c   Sun Feb  3 21:28:58 2019        (r343723)
+++ head/sys/kern/kern_proc.c   Sun Feb  3 21:31:40 2019        (r343724)
@@ -3112,8 +3112,8 @@ allproc_loop:
                        PROC_UNLOCK(p);
                        continue;
                }
-               _PHOLD(p);
                sx_xunlock(&allproc_lock);
+               _PHOLD(p);
                r = thread_single(p, SINGLE_ALLPROC);
                if (r != 0)
                        restart = true;
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to