HID: input: do not run GET_REPORT unless there's a Resolution Multiplier
authorPeter Hutterer <peter.hutterer@who-t.net>
Tue, 9 Jun 2020 06:03:19 +0000 (16:03 +1000)
committerJiri Kosina <jkosina@suse.cz>
Tue, 16 Jun 2020 15:24:58 +0000 (17:24 +0200)
commit1ad273d6ff2d3af6ce3a4c8bd81a2ba10151ae0e
treefff95dc0dcf086f7818fbe311ebfe85fc9c60658
parent8e9ddbde9ddbba74c86b0c5f8eefb26192b3242e
HID: input: do not run GET_REPORT unless there's a Resolution Multiplier

hid-multitouch currently runs GET_REPORT for Contact Max and again to
retrieve the Win8 blob. If both are within the same report, the
Resolution Multiplier code calls GET_FEATURE again and this time,
possibly due to timing, it causes the ILITEK-TP device interpret the
GET_FEATURE as an instruction to change the mode and effectively stop
the device from functioning as expected.

Notably: the device doesn't even have a Resolution Multiplier so it
shouldn't be affected by any of this at all.

Fix this by making sure we only execute GET_REPORT if there is
a Resolution Multiplier in the respective report. Where the
HID_QUIRK_NO_INIT_REPORTS field is set we just bail out immediately. This
shouldn't be triggered by any real device anyway.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Tested-by: Wen He <wen.he_1@nxp.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
drivers/hid/hid-input.c