diff options
author | Jiri Kosina <jkosina@suse.cz> | 2021-11-05 12:16:17 +0100 |
---|---|---|
committer | Jiri Kosina <jkosina@suse.cz> | 2021-11-05 12:16:17 +0100 |
commit | 3f81b3a387f7f7b0978647a96f99fc5b5fd9b64c (patch) | |
tree | 85621199beaa1f8a67e05cc013047968b9152eeb | |
parent | Merge branch 'for-5.16/u2fzero' into for-linus (diff) | |
parent | HID: wacom: Make use of the helper function devm_add_action_or_reset() (diff) | |
download | linux-3f81b3a387f7f7b0978647a96f99fc5b5fd9b64c.tar.xz linux-3f81b3a387f7f7b0978647a96f99fc5b5fd9b64c.zip |
Merge branch 'for-5.16/wacom' into for-linus
- improvement of device management handling (Cai Huoqing, Jason Gerecke)
-rw-r--r-- | drivers/hid/wacom_sys.c | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/drivers/hid/wacom_sys.c b/drivers/hid/wacom_sys.c index 93f49b766376..2717d39600b4 100644 --- a/drivers/hid/wacom_sys.c +++ b/drivers/hid/wacom_sys.c @@ -881,8 +881,8 @@ static int wacom_add_shared_data(struct hid_device *hdev) if (!data) { data = kzalloc(sizeof(struct wacom_hdev_data), GFP_KERNEL); if (!data) { - retval = -ENOMEM; - goto out; + mutex_unlock(&wacom_udev_list_lock); + return -ENOMEM; } kref_init(&data->kref); @@ -890,22 +890,19 @@ static int wacom_add_shared_data(struct hid_device *hdev) list_add_tail(&data->list, &wacom_udev_list); } + mutex_unlock(&wacom_udev_list_lock); + wacom_wac->shared = &data->shared; - retval = devm_add_action(&hdev->dev, wacom_remove_shared_data, wacom); - if (retval) { - mutex_unlock(&wacom_udev_list_lock); - wacom_remove_shared_data(wacom); + retval = devm_add_action_or_reset(&hdev->dev, wacom_remove_shared_data, wacom); + if (retval) return retval; - } if (wacom_wac->features.device_type & WACOM_DEVICETYPE_TOUCH) wacom_wac->shared->touch = hdev; else if (wacom_wac->features.device_type & WACOM_DEVICETYPE_PEN) wacom_wac->shared->pen = hdev; -out: - mutex_unlock(&wacom_udev_list_lock); return retval; } |