If mkdir() of VHCI_STATE_PATH fails because the directory
already exists, that's not an error. This patch fixes
annoying "record connection" errors that would typically
come up on attach.

Signed-off-by: Ilija Hadzic <ihad...@research.bell-labs.com>
---
 drivers/staging/usbip/userspace/src/usbip_attach.c | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/drivers/staging/usbip/userspace/src/usbip_attach.c 
b/drivers/staging/usbip/userspace/src/usbip_attach.c
index bdf61c0..2da4e44 100644
--- a/drivers/staging/usbip/userspace/src/usbip_attach.c
+++ b/drivers/staging/usbip/userspace/src/usbip_attach.c
@@ -27,6 +27,7 @@
 #include <fcntl.h>
 #include <getopt.h>
 #include <unistd.h>
+#include <errno.h>
 
 #include "vhci_driver.h"
 #include "usbip_common.h"
@@ -52,8 +53,18 @@ static int record_connection(char *host, char *port, char 
*busid, int rhport)
        int ret;
 
        ret = mkdir(VHCI_STATE_PATH, 0700);
-       if (ret < 0)
-               return -1;
+       if (ret < 0) {
+               /* if VHCI_STATE_PATH exists, then it better be a directory */
+               if (errno == EEXIST) {
+                       struct stat s;
+                       ret = stat(VHCI_STATE_PATH, &s);
+                       if (ret < 0)
+                               return -1;
+                       if (!(s.st_mode & S_IFDIR))
+                               return -1;
+               } else
+                       return -1;
+       }
 
        snprintf(path, PATH_MAX, VHCI_STATE_PATH"/port%d", rhport);
 
-- 
1.7.12

--
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