staging: usbip: userspace: don't throw error when trying to read configuration specific attributes

When a device has just been bound to usbip-host but the client hasn't
set a configuration on it, certain attributes will not exist. Don't
treat this as an error.

Signed-off-by: Valentina Manea <valentina.manea.m@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Valentina Manea 2014-03-08 14:53:35 +02:00 committed by Greg Kroah-Hartman
parent 6080cd0e92
commit 87f627f7bd
1 changed files with 15 additions and 2 deletions

View File

@ -127,10 +127,23 @@ int read_attr_value(struct udev_device *dev, const char *name,
goto err; goto err;
} }
/* The client chooses the device configuration
* when attaching it so right after being bound
* to usbip-host on the server the device will
* have no configuration.
* Therefore, attributes such as bConfigurationValue
* and bNumInterfaces will not exist and sscanf will
* fail. Check for these cases and don't treat them
* as errors.
*/
ret = sscanf(attr, format, &num); ret = sscanf(attr, format, &num);
if (ret < 1) { if (ret < 1) {
err("sscanf failed"); if (strcmp(name, "bConfigurationValue") &&
goto err; strcmp(name, "bNumInterfaces")) {
err("sscanf failed for attribute %s", name);
goto err;
}
} }
err: err: