| From a0e4d8c332af59c51ace7f23ef2ad90ebe9b19cf Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Fri, 19 Mar 2021 17:27:16 -0700 |
| Subject: HID: do not use down_interruptible() when unbinding devices |
| |
| From: Dmitry Torokhov <dmitry.torokhov@gmail.com> |
| |
| [ Upstream commit f2145f8dc566c4f3b5a8deb58dcd12bed4e20194 ] |
| |
| Action of unbinding driver from a device is not cancellable and should not |
| fail, and driver core does not pay attention to the result of "remove" |
| method, therefore using down_interruptible() in hid_device_remove() does |
| not make sense. |
| |
| Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com> |
| Signed-off-by: Jiri Kosina <jkosina@suse.cz> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/hid/hid-core.c | 10 +++------- |
| 1 file changed, 3 insertions(+), 7 deletions(-) |
| |
| diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c |
| index 0f69f35f2957..5550c943f985 100644 |
| --- a/drivers/hid/hid-core.c |
| +++ b/drivers/hid/hid-core.c |
| @@ -2306,12 +2306,8 @@ static int hid_device_remove(struct device *dev) |
| { |
| struct hid_device *hdev = to_hid_device(dev); |
| struct hid_driver *hdrv; |
| - int ret = 0; |
| |
| - if (down_interruptible(&hdev->driver_input_lock)) { |
| - ret = -EINTR; |
| - goto end; |
| - } |
| + down(&hdev->driver_input_lock); |
| hdev->io_started = false; |
| |
| hdrv = hdev->driver; |
| @@ -2326,8 +2322,8 @@ static int hid_device_remove(struct device *dev) |
| |
| if (!hdev->io_started) |
| up(&hdev->driver_input_lock); |
| -end: |
| - return ret; |
| + |
| + return 0; |
| } |
| |
| static ssize_t modalias_show(struct device *dev, struct device_attribute *a, |
| -- |
| 2.30.2 |
| |