aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging/usbip/userspace/src/usbipd.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/staging/usbip/userspace/src/usbipd.c')
-rw-r--r--drivers/staging/usbip/userspace/src/usbipd.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/drivers/staging/usbip/userspace/src/usbipd.c b/drivers/staging/usbip/userspace/src/usbipd.c
index 34760cc1d10e..3e913b861dc2 100644
--- a/drivers/staging/usbip/userspace/src/usbipd.c
+++ b/drivers/staging/usbip/userspace/src/usbipd.c
@@ -60,7 +60,7 @@ static const char usbipd_help_string[] =
" -d, --debug \n"
" Print debugging information. \n"
" \n"
- " -h, --help \n"
+ " -h, --help \n"
" Print this help. \n"
" \n"
" -v, --version \n"
@@ -436,9 +436,6 @@ static int do_standalone_mode(int daemonize)
struct timespec timeout;
sigset_t sigmask;
- if (usbip_names_init(USBIDS_FILE))
- err("failed to open %s", USBIDS_FILE);
-
if (usbip_host_driver_open()) {
err("please load " USBIP_CORE_MOD_NAME ".ko and "
USBIP_HOST_DRV_NAME ".ko!");
@@ -446,8 +443,9 @@ static int do_standalone_mode(int daemonize)
}
if (daemonize) {
- if (daemon(0,0) < 0) {
+ if (daemon(0, 0) < 0) {
err("daemonizing failed: %s", strerror(errno));
+ usbip_host_driver_close();
return -1;
}
umask(0);
@@ -456,14 +454,18 @@ static int do_standalone_mode(int daemonize)
set_signal();
ai_head = do_getaddrinfo(NULL, PF_UNSPEC);
- if (!ai_head)
+ if (!ai_head) {
+ usbip_host_driver_close();
return -1;
+ }
info("starting " PROGNAME " (%s)", usbip_version_string);
nsockfd = listen_all_addrinfo(ai_head, sockfdlist);
if (nsockfd <= 0) {
err("failed to open a listening socket");
+ freeaddrinfo(ai_head);
+ usbip_host_driver_close();
return -1;
}
fds = calloc(nsockfd, sizeof(struct pollfd));
@@ -502,7 +504,6 @@ static int do_standalone_mode(int daemonize)
free(fds);
freeaddrinfo(ai_head);
usbip_host_driver_close();
- usbip_names_free();
return 0;
}