Commit 3f81b3a3 authored by Jiri Kosina's avatar Jiri Kosina

Merge branch 'for-5.16/wacom' into for-linus

- improvement of device management handling (Cai Huoqing, Jason Gerecke)
parents a7c2b7ea 3d422a46
...@@ -881,8 +881,8 @@ static int wacom_add_shared_data(struct hid_device *hdev) ...@@ -881,8 +881,8 @@ static int wacom_add_shared_data(struct hid_device *hdev)
if (!data) { if (!data) {
data = kzalloc(sizeof(struct wacom_hdev_data), GFP_KERNEL); data = kzalloc(sizeof(struct wacom_hdev_data), GFP_KERNEL);
if (!data) { if (!data) {
retval = -ENOMEM; mutex_unlock(&wacom_udev_list_lock);
goto out; return -ENOMEM;
} }
kref_init(&data->kref); kref_init(&data->kref);
...@@ -890,22 +890,19 @@ static int wacom_add_shared_data(struct hid_device *hdev) ...@@ -890,22 +890,19 @@ static int wacom_add_shared_data(struct hid_device *hdev)
list_add_tail(&data->list, &wacom_udev_list); list_add_tail(&data->list, &wacom_udev_list);
} }
mutex_unlock(&wacom_udev_list_lock);
wacom_wac->shared = &data->shared; wacom_wac->shared = &data->shared;
retval = devm_add_action(&hdev->dev, wacom_remove_shared_data, wacom); retval = devm_add_action_or_reset(&hdev->dev, wacom_remove_shared_data, wacom);
if (retval) { if (retval)
mutex_unlock(&wacom_udev_list_lock);
wacom_remove_shared_data(wacom);
return retval; return retval;
}
if (wacom_wac->features.device_type & WACOM_DEVICETYPE_TOUCH) if (wacom_wac->features.device_type & WACOM_DEVICETYPE_TOUCH)
wacom_wac->shared->touch = hdev; wacom_wac->shared->touch = hdev;
else if (wacom_wac->features.device_type & WACOM_DEVICETYPE_PEN) else if (wacom_wac->features.device_type & WACOM_DEVICETYPE_PEN)
wacom_wac->shared->pen = hdev; wacom_wac->shared->pen = hdev;
out:
mutex_unlock(&wacom_udev_list_lock);
return retval; return retval;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment