Author: pjd
Date: Thu Sep  5 01:05:48 2013
New Revision: 255227
URL: http://svnweb.freebsd.org/changeset/base/255227

Log:
  Remove fallback to fork(2) if pdfork(2) is not available. If the parent
  process dies, the process descriptor will be closed and pdfork(2)ed child
  will be killed, which is not the case when regular fork(2) is used.
  
  The PROCDESC option is now part of the GENERIC kernel configuration, so we
  can start depending on it.
  
  Add UPDATING entry to inform that this option is now required and log
  detailed instruction to syslog if pdfork(2) is not available:
  
        The pdfork(2) system call is not available; recompile the kernel with 
options PROCDESC
  
  Submitted by: Mariusz Zaborski <osho...@freebsd.org>
  Sponsored by: Google Summer of Code 2013

Modified:
  head/UPDATING
  head/usr.sbin/rwhod/rwhod.c

Modified: head/UPDATING
==============================================================================
--- head/UPDATING       Thu Sep  5 00:53:01 2013        (r255226)
+++ head/UPDATING       Thu Sep  5 01:05:48 2013        (r255227)
@@ -32,6 +32,12 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 10
        "ln -s 'abort:false,junk:false' /etc/malloc.conf".)
 
 20130905:
+       The PROCDESC kernel option is now part of the GENERIC kernel
+       configuration and is required for the rwhod(8) to work.
+       If you are using custom kernel configuration, you should include
+       'options PROCDESC'.
+
+20130905:
        The API and ABI related to the Capsicum framework was modified
        in backward incompatible way. The userland libraries and programs
        have to be recompiled to work with the new kernel. This includes the

Modified: head/usr.sbin/rwhod/rwhod.c
==============================================================================
--- head/usr.sbin/rwhod/rwhod.c Thu Sep  5 00:53:01 2013        (r255226)
+++ head/usr.sbin/rwhod/rwhod.c Thu Sep  5 01:05:48 2013        (r255227)
@@ -274,21 +274,17 @@ main(int argc, char *argv[])
                exit(1);
        if (!quiet_mode) {
                pid_child_receiver = pdfork(&fdp, 0);
-               if (pid_child_receiver == -1) {
-                       if (errno != ENOSYS) {
-                               syslog(LOG_ERR, "pdfork: %m");
-                               exit(1);
-                       } else {
-                               pid_child_receiver = fork();
-                               fdp = -1;
-                       }
-               }
                if (pid_child_receiver == 0) {
                        receiver_process();
                } else if (pid_child_receiver > 0) {
                        sender_process();
                } else if (pid_child_receiver == -1) {
-                       syslog(LOG_ERR, "pdfork: %m");
+                       if (errno == ENOSYS) {
+                               syslog(LOG_ERR,
+                                   "The pdfork(2) system call is not 
available; recompile the kernel with options PROCDESC");
+                       } else {
+                               syslog(LOG_ERR, "pdfork: %m");
+                       }
                        exit(1);
                }
        } else {
_______________________________________________
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