HID: wacom: Fix poor prox handling in 'wacom_pl_irq'
authorJason Gerecke <killertofu@gmail.com>
Thu, 26 Jan 2017 17:06:22 +0000 (09:06 -0800)
committerJiri Kosina <jkosina@suse.cz>
Thu, 26 Jan 2017 20:51:10 +0000 (21:51 +0100)
commit282e4637bc1c0b338708bcebd09d31c69abec070
treed3667b796f91737bd6a747886cd433b463e05ee9
parenta9ce7856cad1bf43de5c43888e4076e77371d51b
HID: wacom: Fix poor prox handling in 'wacom_pl_irq'

Commit 025bcc1 performed cleanup work on the 'wacom_pl_irq' function, making
it follow the standards used in the rest of the codebase. The change
unintiontionally allowed the function to send input events from reports
that are not marked as being in prox. This can cause problems as the
report values for X, Y, etc. are not guaranteed to be correct. In
particular, occasionally the tablet will send a report with these values
set to zero. If such a report is received it can caus an unexpected jump
in the XY position.

This patch surrounds more of the processing code with a proximity check,
preventing these zeroed reports from overwriting the current state. To
be safe, only the tool type and ABS_MISC events should be reported when
the pen is marked as being out of prox.

Fixes: 025bcc1540 ("HID: wacom: Simplify 'wacom_pl_irq'")
Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>
Reviewed-by: Ping Cheng <pingc@wacom.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
drivers/hid/wacom_wac.c