| From: =?UTF-8?q?Valtteri=20Heikkil=C3=A4?= <rnd@nic.fi> |
| Date: Tue, 14 Feb 2017 23:14:32 +0000 |
| Subject: HID: reject input outside logical range only if null state is set |
| MIME-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| commit 3f3752705dbd50b66b66ad7b4d54fe33d2f746ed upstream. |
| |
| This patch fixes an issue in drivers/hid/hid-input.c where USB HID |
| control null state flag is not checked upon rejecting inputs outside |
| logical minimum-maximum range. The check should be made according to USB |
| HID specification 1.11, section 6.2.2.5, p.31. The fix will resolve |
| issues with some game controllers, such as: |
| https://bugzilla.kernel.org/show_bug.cgi?id=68621 |
| |
| [tk@the-tk.com: shortened and fixed spelling in commit message] |
| Signed-off-by: Valtteri Heikkilรค <rnd@nic.fi> |
| Signed-off-by: Tomasz Kramkowski <tk@the-tk.com> |
| Acked-By: Benjamin Tissoires <benjamin.tissoires@redhat.com> |
| Signed-off-by: Jiri Kosina <jkosina@suse.cz> |
| Signed-off-by: Ben Hutchings <ben@decadent.org.uk> |
| --- |
| drivers/hid/hid-input.c | 1 + |
| 1 file changed, 1 insertion(+) |
| |
| --- a/drivers/hid/hid-input.c |
| +++ b/drivers/hid/hid-input.c |
| @@ -1094,6 +1094,7 @@ void hidinput_hid_event(struct hid_devic |
| * don't specify logical min and max. |
| */ |
| if ((field->flags & HID_MAIN_ITEM_VARIABLE) && |
| + (field->flags & HID_MAIN_ITEM_NULL_STATE) && |
| (field->logical_minimum < field->logical_maximum) && |
| (value < field->logical_minimum || |
| value > field->logical_maximum)) { |