]> git.baikalelectronics.ru Git - kernel.git/commit
HID: wacom: Fix sibling detection regression
authorJason Gerecke <killertofu@gmail.com>
Tue, 17 Jan 2017 23:38:58 +0000 (15:38 -0800)
committerJiri Kosina <jkosina@suse.cz>
Thu, 19 Jan 2017 13:19:25 +0000 (14:19 +0100)
commit91ba88ff69681dc6622c85de437ce5f106bc8034
tree458b84a40d30ed494712d9772c07c91240544c75
parente0544f4da7d7ea7be2b217cdf1b68d96ce921b38
HID: wacom: Fix sibling detection regression

Commit 014447a ("HID: wacom: generic: Add support for sensor offsets") included
a change to the operation and location of the call to 'wacom_add_shared_data'
in 'wacom_parse_and_register'. The modifications included moving it higher up
so that it would occur before the call to 'wacom_retrieve_hid_descriptor'. This
was done to prevent a crash that would have occured when the report containing
tablet offsets was fed into the driver with 'wacom_hid_report_raw_event'
(specifically: the various 'wacom_wac_*_report' functions were written with the
assumption that they would only be called once tablet setup had completed;
'wacom_wac_pen_report' in particular dereferences 'shared' which wasn't yet
allocated).

Moving the call to 'wacom_add_shared_data' effectively prevented the crash but
also broke the sibiling detection code which assumes that the HID descriptor
has been read and the various device_type flags set.

To fix this situation, we restore the original 'wacom_add_shared_data'
operation and location and instead implement an alternative change that can
also prevent the crash. Specifically, we notice that the report functions
mentioned above expect to be called only for input reports.  By adding a check,
we can prevent feature reports (such as the offset report) from
causing trouble.

Fixes: 014447ac14 ("HID: wacom: generic: Add support for sensor offsets")
Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>
Tested-by: Ping Cheng <pingc@wacom.com>
Reviewed-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
drivers/hid/wacom_sys.c
drivers/hid/wacom_wac.c