diff options
author | Oliver Neukum <oliver@neukum.org> | 2008-01-30 16:06:03 +0100 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2008-02-21 15:38:51 -0800 |
commit | 0cc5e2e7c3edd8b45775f50c74738d61b43ac5e8 (patch) | |
tree | d6020d265c33d3a9753a11b629c8331ee79668ec | |
parent | efa66f14e2d1aaad8ad7e1664d768de74ffb665b (diff) | |
download | lwn-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.c | 4 |
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; } |