chiark / gitweb /
[PATCH] udevd exit path cleanup
authorkay.sievers@vrfy.org <kay.sievers@vrfy.org>
Tue, 23 Nov 2004 02:28:41 +0000 (03:28 +0100)
committerGreg KH <gregkh@suse.de>
Wed, 27 Apr 2005 05:30:28 +0000 (22:30 -0700)
udevd.c

diff --git a/udevd.c b/udevd.c
index dd505d03d95d2538111ad26cfc379b49560c01a3..3ad8c47f22887660e05d5e6ee30d2b63c58e4a40 100644 (file)
--- a/udevd.c
+++ b/udevd.c
@@ -419,7 +419,7 @@ int main(int argc, char *argv[], char *envp[])
 
        if (getuid() != 0) {
                dbg("need to be root, exit");
-               _exit(1);
+               goto exit;
        }
 
        /* make sure we don't lock any path */
@@ -430,7 +430,7 @@ int main(int argc, char *argv[], char *envp[])
        fd = open( "/dev/null", O_RDWR );
        if ( fd < 0 ) {
                dbg("error opening /dev/null %s", strerror(errno));
-               exit(1);
+               goto exit;
        }
        dup2(fd, 0);
        dup2(fd, 1);
@@ -445,29 +445,29 @@ int main(int argc, char *argv[], char *envp[])
        retval = pipe(pipefds);
        if (retval < 0) {
                dbg("error getting pipes: %s", strerror(errno));
-               exit(1);
+               goto exit;
        }
 
        retval = fcntl(pipefds[0], F_SETFL, O_NONBLOCK);
        if (retval < 0) {
                dbg("error fcntl on read pipe: %s", strerror(errno));
-               exit(1);
+               goto exit;
        }
        retval = fcntl(pipefds[0], F_SETFD, FD_CLOEXEC);
        if (retval < 0) {
                dbg("error fcntl on read pipe: %s", strerror(errno));
-               exit(1);
+               goto exit;
        }
 
        retval = fcntl(pipefds[1], F_SETFL, O_NONBLOCK);
        if (retval < 0) {
                dbg("error fcntl on write pipe: %s", strerror(errno));
-               exit(1);
+               goto exit;
        }
        retval = fcntl(pipefds[1], F_SETFD, FD_CLOEXEC);
        if (retval < 0) {
                dbg("error fcntl on write pipe: %s", strerror(errno));
-               exit(1);
+               goto exit;
        }
 
        /* set signal handlers */
@@ -488,13 +488,14 @@ int main(int argc, char *argv[], char *envp[])
        udevsendsock = socket(AF_LOCAL, SOCK_DGRAM, 0);
        if (udevsendsock == -1) {
                dbg("error getting socket, exit");
-               exit(1);
+               goto exit;
        }
 
        /* the bind takes care of ensuring only one copy running */
        retval = bind(udevsendsock, (struct sockaddr *) &saddr, addrlen);
        if (retval < 0) {
                dbg("bind failed, exit");
+               close(udevsendsock);
                goto exit;
        }
 
@@ -549,8 +550,8 @@ int main(int argc, char *argv[], char *envp[])
                        exec_queue_manager();
                }
        }
+
 exit:
-       close(udevsendsock);
        logging_close();
        return 1;
 }