Author: oshogbo
Date: Mon Aug  5 19:59:23 2019
New Revision: 350610
URL: https://svnweb.freebsd.org/changeset/base/350610

Log:
  exit1: postpone clearing P_TRACED flag until the proctree lock is acquired
  
  In case of the process being debugged. The P_TRACED is cleared very early,
  which would make procdesc_close() not calling proc_clear_orphan().
  That would result in the debugged process can not be able to collect
  status of the process with process descriptor.
  
  Reviewed by:  markj, kib
  Tested by:    pho
  MFC after:    1 month

Modified:
  head/sys/kern/kern_exit.c

Modified: head/sys/kern/kern_exit.c
==============================================================================
--- head/sys/kern/kern_exit.c   Mon Aug  5 19:30:28 2019        (r350609)
+++ head/sys/kern/kern_exit.c   Mon Aug  5 19:59:23 2019        (r350610)
@@ -355,7 +355,6 @@ exit1(struct thread *td, int rval, int signo)
         */
        PROC_LOCK(p);
        stopprofclock(p);
-       p->p_flag &= ~(P_TRACED | P_PPWAIT | P_PPTRACE);
        p->p_ptevents = 0;
 
        /*
@@ -458,6 +457,9 @@ exit1(struct thread *td, int rval, int signo)
        sx_xunlock(&allproc_lock);
 
        sx_xlock(&proctree_lock);
+       PROC_LOCK(p);
+       p->p_flag &= ~(P_TRACED | P_PPWAIT | P_PPTRACE);
+       PROC_UNLOCK(p);
 
        /*
         * Reparent all children processes:
_______________________________________________
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