summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOliver Neukum <oliver@neukum.org>2008-01-30 16:06:03 +0100
committerGreg Kroah-Hartman <gregkh@suse.de>2008-02-21 15:38:51 -0800
commit0cc5e2e7c3edd8b45775f50c74738d61b43ac5e8 (patch)
treed6020d265c33d3a9753a11b629c8331ee79668ec
parentefa66f14e2d1aaad8ad7e1664d768de74ffb665b (diff)
downloadlwn-0cc5e2e7c3edd8b45775f50c74738d61b43ac5e8.tar.gz
lwn-0cc5e2e7c3edd8b45775f50c74738d61b43ac5e8.zip
USB: fix error handling in trancevibrator
trancevibrator should not pretend success if it returns an error. Signed-off-by: Oliver Neukum <oneukum@suse.de> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r--drivers/usb/misc/trancevibrator.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/usb/misc/trancevibrator.c b/drivers/usb/misc/trancevibrator.c
index 67e2fc20eeeb..03368edf3f22 100644
--- a/drivers/usb/misc/trancevibrator.c
+++ b/drivers/usb/misc/trancevibrator.c
@@ -59,13 +59,14 @@ static ssize_t set_speed(struct device *dev, struct device_attribute *attr,
{
struct usb_interface *intf = to_usb_interface(dev);
struct trancevibrator *tv = usb_get_intfdata(intf);
- int temp, retval;
+ int temp, retval, old;
temp = simple_strtoul(buf, NULL, 10);
if (temp > 255)
temp = 255;
else if (temp < 0)
temp = 0;
+ old = tv->speed;
tv->speed = temp;
dev_dbg(&tv->udev->dev, "speed = %d\n", tv->speed);
@@ -77,6 +78,7 @@ static ssize_t set_speed(struct device *dev, struct device_attribute *attr,
tv->speed, /* speed value */
0, NULL, 0, USB_CTRL_GET_TIMEOUT);
if (retval) {
+ tv->speed = old;
dev_dbg(&tv->udev->dev, "retval = %d\n", retval);
return retval;
}