diff options
author | kay.sievers@vrfy.org <kay.sievers@vrfy.org> | 2004-11-23 03:28:41 +0100 |
---|---|---|
committer | Greg KH <gregkh@suse.de> | 2005-04-26 22:30:28 -0700 |
commit | ec9cc0127d3b50885723dd4f54d4851e7160ec22 (patch) | |
tree | cba8c9693abf13fef7c116bd2442ecdb2ffd1b8b /udevd.c | |
parent | 8825e9e71b3eaac8ce90f4fede2bb07a7ea7a969 (diff) |
[PATCH] udevd exit path cleanup
Diffstat (limited to 'udevd.c')
-rw-r--r-- | udevd.c | 19 |
1 files changed, 10 insertions, 9 deletions
@@ -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; } |