]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
HID: fix hid_ignore_special_drivers module parameter
authorBenjamin Tissoires <benjamin.tissoires@redhat.com>
Fri, 12 Feb 2016 16:10:37 +0000 (17:10 +0100)
committerSasha Levin <sasha.levin@oracle.com>
Mon, 18 Apr 2016 12:50:36 +0000 (08:50 -0400)
[ Upstream commit 4392bf333388cabdad5afe5b1500002d7b9c318e ]

hid_ignore_special_drivers works fine until hid_scan_report autodetects and
reassign devices (for hid-multitouch, hid-microsoft and hid-rmi).

Simplify the handling of the parameter: if it is there, use hid-generic, no
matter what, and if not, scan the device or rely on the hid_have_special_driver
table.

This was detected while trying to disable hid-multitouch on a Surface Pro cover
which prevented to use the keyboard.

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
CC: stable@vger.kernel.org
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
drivers/hid/hid-core.c

index 9ce9dfeb12583b12a3f5ab5dcbda83b4f2cbd83c..bc23db196930e0b1bf51750cd5d39645da1dee6e 100644 (file)
@@ -2584,9 +2584,10 @@ int hid_add_device(struct hid_device *hdev)
        /*
         * Scan generic devices for group information
         */
-       if (hid_ignore_special_drivers ||
-           (!hdev->group &&
-            !hid_match_id(hdev, hid_have_special_driver))) {
+       if (hid_ignore_special_drivers) {
+               hdev->group = HID_GROUP_GENERIC;
+       } else if (!hdev->group &&
+                  !hid_match_id(hdev, hid_have_special_driver)) {
                ret = hid_scan_report(hdev);
                if (ret)
                        hid_warn(hdev, "bad device descriptor (%d)\n", ret);