[nfs-utils PATCH] close the syslog fd in daemon_init()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Commit 7addf9d (cleanup daemonization code) added the following line to
mydaemon_init():

        dup2(pipefds[1], 3);

If we've already called vsyslog() before the fork(), then chances are fd
3 was being used for the syslog socket.  In that case the next vsyslog()
call will cause the data to appear on the read end of the pipe, causing
the parent to exit with a nonzero status.  If systemd is running, it
will see the parent's nonzero exit status and will terminate the child
as well.

So just call closelog() to close the fd.  The next call to vsyslog()
will open a new one if need be.

Signed-off-by: Scott Mayhew <smayhew@xxxxxxxxxx>
---
 support/nfs/mydaemon.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/support/nfs/mydaemon.c b/support/nfs/mydaemon.c
index 3391eff..701cfd9 100644
--- a/support/nfs/mydaemon.c
+++ b/support/nfs/mydaemon.c
@@ -122,6 +122,7 @@ daemon_init(bool fg)
 	dup2(tempfd, 0);
 	dup2(tempfd, 1);
 	dup2(tempfd, 2);
+	closelog();
 	dup2(pipefds[1], 3);
 	pipefds[1] = 3;
 	closeall(4);
-- 
1.9.3

--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux