HID: usbkbd: synchronize LED URB submission
commitc196adf87514560f867492978ae350d4bbced0bd
authorWillem Penninckx <willem.penninckx@cs.kuleuven.be>
Wed, 23 Nov 2011 10:25:34 +0000 (23 11:25 +0100)
committerJiri Kosina <jkosina@suse.cz>
Wed, 23 Nov 2011 11:30:25 +0000 (23 12:30 +0100)
tree9087524790420f16ed25c8a5245314d489bfc4af
parentf2c4826c685b1ad9afdcef3649e3e60a3348491c
HID: usbkbd: synchronize LED URB submission

usb_kbd_event() and usb_kbd_led() can be called concurrently, but they are not
synchronized. They both readwrite kbd->leds, and usb_kbd_event() originally just
checked the URB status field, while urb.h states that "It [status field] should
not be examined before the URB is returned to the completion handler."

To fix this unsynchronized behavior, this patch introduces a boolean
representing whether the URB is submitted, and a spinlock.

Signed-off-by: Willem Penninckx <willem.penninckx@cs.kuleuven.be>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
drivers/hid/usbhid/usbkbd.c