diff options
author | Jiri Kosina <jkosina@suse.cz> | 2018-08-20 19:11:20 +0300 |
---|---|---|
committer | Jiri Kosina <jkosina@suse.cz> | 2018-08-20 19:11:20 +0300 |
commit | a91ddf23e2400140382e08eca03786c6e948af86 (patch) | |
tree | 2f375625c4837f06e922c8f17246a9e616bb0aac /drivers/hid/usbhid | |
parent | 78a8ad7948451f5683fc3bc2791b17094f72b96d (diff) | |
parent | 7f342e9c61d7932b7b3dd8a0b9c2768fe7ca3436 (diff) | |
download | linux-a91ddf23e2400140382e08eca03786c6e948af86.tar.xz |
Merge branch 'for-4.19/upstream' into for-linus
Assorted small driver/core fixes.
Diffstat (limited to 'drivers/hid/usbhid')
-rw-r--r-- | drivers/hid/usbhid/hid-core.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/drivers/hid/usbhid/hid-core.c b/drivers/hid/usbhid/hid-core.c index af0e0d061b15..11103efebbaa 100644 --- a/drivers/hid/usbhid/hid-core.c +++ b/drivers/hid/usbhid/hid-core.c @@ -480,6 +480,7 @@ static void hid_ctrl(struct urb *urb) { struct hid_device *hid = urb->context; struct usbhid_device *usbhid = hid->driver_data; + unsigned long flags; int unplug = 0, status = urb->status; switch (status) { @@ -501,7 +502,7 @@ static void hid_ctrl(struct urb *urb) hid_warn(urb->dev, "ctrl urb status %d received\n", status); } - spin_lock(&usbhid->lock); + spin_lock_irqsave(&usbhid->lock, flags); if (unplug) { usbhid->ctrltail = usbhid->ctrlhead; @@ -511,13 +512,13 @@ static void hid_ctrl(struct urb *urb) if (usbhid->ctrlhead != usbhid->ctrltail && hid_submit_ctrl(hid) == 0) { /* Successfully submitted next urb in queue */ - spin_unlock(&usbhid->lock); + spin_unlock_irqrestore(&usbhid->lock, flags); return; } } clear_bit(HID_CTRL_RUNNING, &usbhid->iofl); - spin_unlock(&usbhid->lock); + spin_unlock_irqrestore(&usbhid->lock, flags); usb_autopm_put_interface_async(usbhid->intf); wake_up(&usbhid->wait); } |