|
@@ -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);
|
|
|
|