Call freeaddrinfo when connect/listen fails.
Call usbip_host_driver_close on error.

Signed-off-by: Stefan Reif <ke42c...@cip.cs.fau.de>
---
 drivers/staging/usbip/userspace/src/usbip_network.c | 4 ++--
 drivers/staging/usbip/userspace/src/usbipd.c        | 7 ++++++-
 2 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/drivers/staging/usbip/userspace/src/usbip_network.c 
b/drivers/staging/usbip/userspace/src/usbip_network.c
index 4cb76e5..b12448e 100644
--- a/drivers/staging/usbip/userspace/src/usbip_network.c
+++ b/drivers/staging/usbip/userspace/src/usbip_network.c
@@ -248,10 +248,10 @@ int usbip_net_tcp_connect(char *hostname, char *service)
                close(sockfd);
        }
 
+       freeaddrinfo(res);
+
        if (!rp)
                return EAI_SYSTEM;
 
-       freeaddrinfo(res);
-
        return sockfd;
 }
diff --git a/drivers/staging/usbip/userspace/src/usbipd.c 
b/drivers/staging/usbip/userspace/src/usbipd.c
index cc3be17..3f10c51 100644
--- a/drivers/staging/usbip/userspace/src/usbipd.c
+++ b/drivers/staging/usbip/userspace/src/usbipd.c
@@ -448,6 +448,7 @@ static int do_standalone_mode(int daemonize)
        if (daemonize) {
                if (daemon(0, 0) < 0) {
                        err("daemonizing failed: %s", strerror(errno));
+                       usbip_host_driver_close();
                        return -1;
                }
                umask(0);
@@ -456,14 +457,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));
-- 
1.8.1

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

Reply via email to