提交 fad9fbe8 编写于 作者: O Oliver Neukum 提交者: Jiri Kosina

HID: usbhid: cancel timer for retry synchronously

This makes sure IO is never restarted while a reset is going on

In particular there seems to be no protection from hid_retry_timeout() calling
hid_start_in() which would start IO after hid_pre_reset() has already called
hid_cease_io() because that uses del_timer(), not del_timer_sync()
Signed-off-by: NOliver Neukum <oneukum@suse.de>
Signed-off-by: NJiri Kosina <jkosina@suse.cz>
上级 3797ef6b
...@@ -1270,7 +1270,7 @@ static void hid_cancel_delayed_stuff(struct usbhid_device *usbhid) ...@@ -1270,7 +1270,7 @@ static void hid_cancel_delayed_stuff(struct usbhid_device *usbhid)
static void hid_cease_io(struct usbhid_device *usbhid) static void hid_cease_io(struct usbhid_device *usbhid)
{ {
del_timer(&usbhid->io_retry); del_timer_sync(&usbhid->io_retry);
usb_kill_urb(usbhid->urbin); usb_kill_urb(usbhid->urbin);
usb_kill_urb(usbhid->urbctrl); usb_kill_urb(usbhid->urbctrl);
usb_kill_urb(usbhid->urbout); usb_kill_urb(usbhid->urbout);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册