usb: usbip tool: Fix get_nports()
authorYuyang Du <yuyang.du@intel.com>
Wed, 5 Apr 2017 22:03:23 +0000 (06:03 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 8 Apr 2017 10:17:42 +0000 (12:17 +0200)
The commit 0775a9cbc694e8c72 ("usbip: vhci extension: modifications
to vhci driver") introduced multiple controllers, and nports as a sys
file, and claimed to read the nports from it, but it didn't.

In addition, the get_nports() has been so wrong that even with 8 port
lines for instance, it gets 7 (I am guessing it is due to a '\n' mess).
Nevertheless, we fix it by reading the nports attribute.

Reviewed-by: Krzysztof Opasiak <k.opasiak@samsung.com>
Signed-off-by: Yuyang Du <yuyang.du@intel.com>
Acked-by: Shuah Khan <shuahkh@osg.samsung.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
tools/usb/usbip/libsrc/vhci_driver.c

index ad9204773533f4e3d6961dc2a9261720a39a1a44..f659c146cdc8410001a3da7197f2a47566e63a35 100644 (file)
@@ -123,33 +123,15 @@ static int refresh_imported_device_list(void)
 
 static int get_nports(void)
 {
-       char *c;
-       int nports = 0;
-       const char *attr_status;
+       const char *attr_nports;
 
-       attr_status = udev_device_get_sysattr_value(vhci_driver->hc_device,
-                                              "status");
-       if (!attr_status) {
-               err("udev_device_get_sysattr_value failed");
+       attr_nports = udev_device_get_sysattr_value(vhci_driver->hc_device, "nports");
+       if (!attr_nports) {
+               err("udev_device_get_sysattr_value nports failed");
                return -1;
        }
 
-       /* skip a header line */
-       c = strchr(attr_status, '\n');
-       if (!c)
-               return 0;
-       c++;
-
-       while (*c != '\0') {
-               /* go to the next line */
-               c = strchr(c, '\n');
-               if (!c)
-                       return nports;
-               c++;
-               nports += 1;
-       }
-
-       return nports;
+       return (int)strtoul(attr_nports, NULL, 10);
 }
 
 /*