Author: eadler
Date: Wed Jun 13 03:40:59 2012
New Revision: 236984
URL: http://svn.freebsd.org/changeset/base/236984

Log:
  MFC r236286:
        Fix likely race condition if wait_child() is interrupted by sigchild()
  
  PR:           bin/102834
  Approved by:  cperciva (implicit)

Modified:
  stable/9/usr.bin/mail/popen.c
Directory Properties:
  stable/9/usr.bin/mail/   (props changed)

Modified: stable/9/usr.bin/mail/popen.c
==============================================================================
--- stable/9/usr.bin/mail/popen.c       Wed Jun 13 03:34:42 2012        
(r236983)
+++ stable/9/usr.bin/mail/popen.c       Wed Jun 13 03:40:59 2012        
(r236984)
@@ -336,12 +336,14 @@ int
 wait_child(int pid)
 {
        sigset_t nset, oset;
-       struct child *cp = findchild(pid);
+       struct child *cp;
 
        (void)sigemptyset(&nset);
        (void)sigaddset(&nset, SIGCHLD);
        (void)sigprocmask(SIG_BLOCK, &nset, &oset);     
 
+       cp = findchild(pid);
+
        while (!cp->done)
                (void)sigsuspend(&oset);
        wait_status = cp->status;
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-stable-9
To unsubscribe, send any mail to "[email protected]"

Reply via email to