]> git.baikalelectronics.ru Git - kernel.git/commit
HID: wacom: Shrink critical section in `wacom_add_shared_data`
authorJason Gerecke <jason.gerecke@wacom.com>
Fri, 15 Oct 2021 02:28:02 +0000 (10:28 +0800)
committerJiri Kosina <jkosina@suse.cz>
Wed, 27 Oct 2021 08:13:57 +0000 (10:13 +0200)
commiteb34390b479ff088278ee8941f91de5120cc1e78
tree4607774c98b5cf55f28c8fb263d345931978cb41
parent96e270a0a7164344cbe57bcd65d6a17da9522b83
HID: wacom: Shrink critical section in `wacom_add_shared_data`

The size of the critical section in this function appears to be larger
than necessary. The `wacom_udev_list_lock` exists to ensure that one
interface cannot begin checking if a shared object exists while a second
interface is doing the same (otherwise both could determine that no
object exists yet and create their own independent objects rather than
sharing just one). It should be safe for the critical section to end
once a fresly-allocated shared object would be found by other threads
(i.e., once it has been added to `wacom_udev_list`, which is looped
over by `wacom_get_hdev_data`).

This commit is a necessary pre-requisite for a later change to swap the
use of `devm_add_action` with `devm_add_action_or_reset`, which would
otherwise deadlock in its error case.

Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
drivers/hid/wacom_sys.c