]> git.baikalelectronics.ru Git - kernel.git/commitdiff
HID: fix false positive out of range values
authorBenjamin Tissoires <benjamin.tissoires@redhat.com>
Wed, 19 Jun 2013 15:49:05 +0000 (17:49 +0200)
committerJiri Kosina <jkosina@suse.cz>
Wed, 19 Jun 2013 21:53:52 +0000 (23:53 +0200)
Commit 295c6374c51716312945a817b0f268305d1df8c0 introduced in 3.3
"HID: ignore absolute values which don't fit between logical min and max"
prevents some Posiflex touch screen to work because they do not provide
logical min and max for their buttons.
Thus, logical min and max are at 0, discarding the buttons events, and
preventing the device to report appropriate X Y.

Adding a check on "min < max" solves the problem.

Reported-by: Jan Kandziora <jjj@gmx.de>
Tested-by: Jan Kandziora <jjj@gmx.de>
Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
drivers/hid/hid-input.c

index 945b8158ec4c7f556d6c9db8753762ac958276c1..82130cf724e4d3bfb7f5426b49709d828507f7fd 100644 (file)
@@ -1045,6 +1045,7 @@ void hidinput_hid_event(struct hid_device *hid, struct hid_field *field, struct
         * section 5.10 and 6.2.25
         */
        if ((field->flags & HID_MAIN_ITEM_VARIABLE) &&
+           (field->logical_minimum < field->logical_maximum) &&
            (value < field->logical_minimum ||
             value > field->logical_maximum)) {
                dbg_hid("Ignoring out-of-range value %x\n", value);