diff options
author | David P <megver83@parabola.nu> | 2018-09-08 14:12:22 -0300 |
---|---|---|
committer | David P <megver83@parabola.nu> | 2018-09-08 14:12:22 -0300 |
commit | e5faa1e53d448b2ae4f6be6768186e625ef15b29 (patch) | |
tree | 3a818d5848eaf3ba8e9a0c43d78577385f67d807 /libre/linux-libre-hardened/HID-core-fix-grouping-by-application.patch | |
parent | 57d4dd0e699353d531590367e1a518de3e6643ed (diff) | |
download | abslibre-e5faa1e53d448b2ae4f6be6768186e625ef15b29.tar.gz abslibre-e5faa1e53d448b2ae4f6be6768186e625ef15b29.tar.bz2 abslibre-e5faa1e53d448b2ae4f6be6768186e625ef15b29.zip |
upgpkg: libre/linux-libre-hardened 4.18.6.a_gnu-1
Signed-off-by: David P <megver83@parabola.nu>
Diffstat (limited to 'libre/linux-libre-hardened/HID-core-fix-grouping-by-application.patch')
-rw-r--r-- | libre/linux-libre-hardened/HID-core-fix-grouping-by-application.patch | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/libre/linux-libre-hardened/HID-core-fix-grouping-by-application.patch b/libre/linux-libre-hardened/HID-core-fix-grouping-by-application.patch new file mode 100644 index 000000000..6da2c1884 --- /dev/null +++ b/libre/linux-libre-hardened/HID-core-fix-grouping-by-application.patch @@ -0,0 +1,78 @@ +From 20acb01da9443e3ca814bb5d17f01b3fea754010 Mon Sep 17 00:00:00 2001 +From: Benjamin Tissoires <benjamin.tissoires@redhat.com> +Date: Tue, 4 Sep 2018 15:31:14 +0200 +Subject: [PATCH] HID: core: fix grouping by application + +commit f07b3c1da92d ("HID: generic: create one input report per +application type") was effectively the same as MULTI_INPUT: +hidinput->report was never set, so hidinput_match_application() +always returned null. + +Fix that by testing against the real application. + +Note that this breaks some old eGalax touchscreens that expect MULTI_INPUT +instead of HID_QUIRK_INPUT_PER_APP. Enable this quirk for backward +compatibility on all non-Win8 touchscreens. + +link: https://bugzilla.kernel.org/show_bug.cgi?id=200847 +link: https://bugzilla.kernel.org/show_bug.cgi?id=200849 +link: https://bugs.archlinux.org/task/59699 +link: https://github.com/NixOS/nixpkgs/issues/45165 + +Cc: stable@vger.kernel.org # v4.18+ +Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com> +Signed-off-by: Jiri Kosina <jkosina@suse.cz> +--- + drivers/hid/hid-input.c | 4 ++-- + drivers/hid/hid-multitouch.c | 3 +++ + include/linux/hid.h | 1 + + 3 files changed, 6 insertions(+), 2 deletions(-) + +diff --git a/drivers/hid/hid-input.c b/drivers/hid/hid-input.c +index ab93dd5927c3a..a137d2835f328 100644 +--- a/drivers/hid/hid-input.c ++++ b/drivers/hid/hid-input.c +@@ -1579,6 +1579,7 @@ static struct hid_input *hidinput_allocate(struct hid_device *hid, + input_dev->dev.parent = &hid->dev; + + hidinput->input = input_dev; ++ hidinput->application = application; + list_add_tail(&hidinput->list, &hid->inputs); + + INIT_LIST_HEAD(&hidinput->reports); +@@ -1674,8 +1675,7 @@ static struct hid_input *hidinput_match_application(struct hid_report *report) + struct hid_input *hidinput; + + list_for_each_entry(hidinput, &hid->inputs, list) { +- if (hidinput->report && +- hidinput->report->application == report->application) ++ if (hidinput->application == report->application) + return hidinput; + } + +diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c +index 45968f7970f87..1a987345692a6 100644 +--- a/drivers/hid/hid-multitouch.c ++++ b/drivers/hid/hid-multitouch.c +@@ -1476,6 +1476,9 @@ static int mt_probe(struct hid_device *hdev, const struct hid_device_id *id) + */ + hdev->quirks |= HID_QUIRK_INPUT_PER_APP; + ++ if (id->group != HID_GROUP_MULTITOUCH_WIN_8) ++ hdev->quirks |= HID_QUIRK_MULTI_INPUT; ++ + timer_setup(&td->release_timer, mt_expired_timeout, 0); + + ret = hid_parse(hdev); +diff --git a/include/linux/hid.h b/include/linux/hid.h +index 773bcb1d4044e..5482dd6ae9efd 100644 +--- a/include/linux/hid.h ++++ b/include/linux/hid.h +@@ -520,6 +520,7 @@ struct hid_input { + const char *name; + bool registered; + struct list_head reports; /* the list of reports */ ++ unsigned int application; /* application usage for this input */ + }; + + enum hid_type { |