diff options
author | Bruno Prémont <bonbons@linux-vserver.org> | 2012-07-30 15:38:57 -0400 |
---|---|---|
committer | Jiri Kosina <jkosina@suse.cz> | 2012-08-15 04:13:26 -0400 |
commit | a93ab8494873a88622bf74be861a93f875643524 (patch) | |
tree | 19f76ccf334ffb78b387b10c047df61f44d8fa07 /drivers/hid/hid-picolcd_leds.c | |
parent | baacf9c5d2e631e7c940527ad670c8d4b019da81 (diff) |
HID: picoLCD: Improve unplug handling
Stop earlier attempting to submit new reports/URBs (though locking and
usbhid still prevents to bail out early enough to not produce multiple
hid-picolcd 0003:04D8:C002.0003: usb_submit_urb(out) failed: -19
messages in kernel log.
Strengthen framebuffer removal to be less racy.
Signed-off-by: Bruno Prémont <bonbons@linux-vserver.org>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Diffstat (limited to 'drivers/hid/hid-picolcd_leds.c')
-rw-r--r-- | drivers/hid/hid-picolcd_leds.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/hid/hid-picolcd_leds.c b/drivers/hid/hid-picolcd_leds.c index 5573cd8b240b..28cb6a4f9634 100644 --- a/drivers/hid/hid-picolcd_leds.c +++ b/drivers/hid/hid-picolcd_leds.c | |||
@@ -54,7 +54,8 @@ void picolcd_leds_set(struct picolcd_data *data) | |||
54 | 54 | ||
55 | spin_lock_irqsave(&data->lock, flags); | 55 | spin_lock_irqsave(&data->lock, flags); |
56 | hid_set_field(report->field[0], 0, data->led_state); | 56 | hid_set_field(report->field[0], 0, data->led_state); |
57 | usbhid_submit_report(data->hdev, report, USB_DIR_OUT); | 57 | if (!(data->status & PICOLCD_FAILED)) |
58 | usbhid_submit_report(data->hdev, report, USB_DIR_OUT); | ||
58 | spin_unlock_irqrestore(&data->lock, flags); | 59 | spin_unlock_irqrestore(&data->lock, flags); |
59 | } | 60 | } |
60 | 61 | ||