• Jason Gerecke's avatar
    HID: wacom: Shrink critical section in `wacom_add_shared_data` · b7644592
    Jason Gerecke authored
    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: default avatarJason Gerecke <jason.gerecke@wacom.com>
    Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
    b7644592
wacom_sys.c 72.8 KB