]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
5.15-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 9 Dec 2021 21:02:52 +0000 (22:02 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 9 Dec 2021 21:02:52 +0000 (22:02 +0100)
added patches:
hid-add-hid_is_usb-function-to-make-it-simpler-for-usb-detection.patch
hid-add-usb_hid-dependancy-on-some-usb-hid-drivers.patch
hid-add-usb_hid-dependancy-to-hid-chicony.patch
hid-add-usb_hid-dependancy-to-hid-prodikeys.patch
hid-bigbenff-prevent-null-pointer-dereference.patch
hid-check-for-valid-usb-device-for-many-hid-drivers.patch
hid-google-add-eel-usb-id.patch
hid-intel-ish-hid-ipc-only-enable-irq-wakeup-when-requested.patch
hid-quirks-add-quirk-for-the-microsoft-surface-3-type-cover.patch
hid-wacom-fix-problems-when-device-is-not-a-valid-usb-device.patch

queue-5.15/hid-add-hid_is_usb-function-to-make-it-simpler-for-usb-detection.patch [new file with mode: 0644]
queue-5.15/hid-add-usb_hid-dependancy-on-some-usb-hid-drivers.patch [new file with mode: 0644]
queue-5.15/hid-add-usb_hid-dependancy-to-hid-chicony.patch [new file with mode: 0644]
queue-5.15/hid-add-usb_hid-dependancy-to-hid-prodikeys.patch [new file with mode: 0644]
queue-5.15/hid-bigbenff-prevent-null-pointer-dereference.patch [new file with mode: 0644]
queue-5.15/hid-check-for-valid-usb-device-for-many-hid-drivers.patch [new file with mode: 0644]
queue-5.15/hid-google-add-eel-usb-id.patch [new file with mode: 0644]
queue-5.15/hid-intel-ish-hid-ipc-only-enable-irq-wakeup-when-requested.patch [new file with mode: 0644]
queue-5.15/hid-quirks-add-quirk-for-the-microsoft-surface-3-type-cover.patch [new file with mode: 0644]
queue-5.15/hid-wacom-fix-problems-when-device-is-not-a-valid-usb-device.patch [new file with mode: 0644]
queue-5.15/series

diff --git a/queue-5.15/hid-add-hid_is_usb-function-to-make-it-simpler-for-usb-detection.patch b/queue-5.15/hid-add-hid_is_usb-function-to-make-it-simpler-for-usb-detection.patch
new file mode 100644 (file)
index 0000000..f88f05e
--- /dev/null
@@ -0,0 +1,115 @@
+From f83baa0cb6cfc92ebaf7f9d3a99d7e34f2e77a8a Mon Sep 17 00:00:00 2001
+From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Date: Wed, 1 Dec 2021 19:35:01 +0100
+Subject: HID: add hid_is_usb() function to make it simpler for USB detection
+
+From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+commit f83baa0cb6cfc92ebaf7f9d3a99d7e34f2e77a8a upstream.
+
+A number of HID drivers already call hid_is_using_ll_driver() but only
+for the detection of if this is a USB device or not.  Make this more
+obvious by creating hid_is_usb() and calling the function that way.
+
+Also converts the existing hid_is_using_ll_driver() functions to use the
+new call.
+
+Cc: Jiri Kosina <jikos@kernel.org>
+Cc: Benjamin Tissoires <benjamin.tissoires@redhat.com>
+Cc: linux-input@vger.kernel.org
+Cc: stable@vger.kernel.org
+Tested-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
+Link: https://lore.kernel.org/r/20211201183503.2373082-1-gregkh@linuxfoundation.org
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/hid/hid-asus.c           |    6 ++----
+ drivers/hid/hid-logitech-dj.c    |    2 +-
+ drivers/hid/hid-u2fzero.c        |    2 +-
+ drivers/hid/hid-uclogic-params.c |    3 +--
+ drivers/hid/wacom_sys.c          |    2 +-
+ include/linux/hid.h              |    5 +++++
+ 6 files changed, 11 insertions(+), 9 deletions(-)
+
+--- a/drivers/hid/hid-asus.c
++++ b/drivers/hid/hid-asus.c
+@@ -1028,8 +1028,7 @@ static int asus_probe(struct hid_device
+       if (drvdata->quirks & QUIRK_IS_MULTITOUCH)
+               drvdata->tp = &asus_i2c_tp;
+-      if ((drvdata->quirks & QUIRK_T100_KEYBOARD) &&
+-          hid_is_using_ll_driver(hdev, &usb_hid_driver)) {
++      if ((drvdata->quirks & QUIRK_T100_KEYBOARD) && hid_is_usb(hdev)) {
+               struct usb_interface *intf = to_usb_interface(hdev->dev.parent);
+               if (intf->altsetting->desc.bInterfaceNumber == T100_TPAD_INTF) {
+@@ -1057,8 +1056,7 @@ static int asus_probe(struct hid_device
+               drvdata->tp = &asus_t100chi_tp;
+       }
+-      if ((drvdata->quirks & QUIRK_MEDION_E1239T) &&
+-          hid_is_using_ll_driver(hdev, &usb_hid_driver)) {
++      if ((drvdata->quirks & QUIRK_MEDION_E1239T) && hid_is_usb(hdev)) {
+               struct usb_host_interface *alt =
+                       to_usb_interface(hdev->dev.parent)->altsetting;
+--- a/drivers/hid/hid-logitech-dj.c
++++ b/drivers/hid/hid-logitech-dj.c
+@@ -1777,7 +1777,7 @@ static int logi_dj_probe(struct hid_devi
+       case recvr_type_bluetooth:      no_dj_interfaces = 2; break;
+       case recvr_type_dinovo:         no_dj_interfaces = 2; break;
+       }
+-      if (hid_is_using_ll_driver(hdev, &usb_hid_driver)) {
++      if (hid_is_usb(hdev)) {
+               intf = to_usb_interface(hdev->dev.parent);
+               if (intf && intf->altsetting->desc.bInterfaceNumber >=
+                                                       no_dj_interfaces) {
+--- a/drivers/hid/hid-u2fzero.c
++++ b/drivers/hid/hid-u2fzero.c
+@@ -290,7 +290,7 @@ static int u2fzero_probe(struct hid_devi
+       unsigned int minor;
+       int ret;
+-      if (!hid_is_using_ll_driver(hdev, &usb_hid_driver))
++      if (!hid_is_usb(hdev))
+               return -EINVAL;
+       dev = devm_kzalloc(&hdev->dev, sizeof(*dev), GFP_KERNEL);
+--- a/drivers/hid/hid-uclogic-params.c
++++ b/drivers/hid/hid-uclogic-params.c
+@@ -843,8 +843,7 @@ int uclogic_params_init(struct uclogic_p
+       struct uclogic_params p = {0, };
+       /* Check arguments */
+-      if (params == NULL || hdev == NULL ||
+-          !hid_is_using_ll_driver(hdev, &usb_hid_driver)) {
++      if (params == NULL || hdev == NULL || !hid_is_usb(hdev)) {
+               rc = -EINVAL;
+               goto cleanup;
+       }
+--- a/drivers/hid/wacom_sys.c
++++ b/drivers/hid/wacom_sys.c
+@@ -2217,7 +2217,7 @@ static void wacom_update_name(struct wac
+       if ((features->type == HID_GENERIC) && !strcmp("Wacom HID", features->name)) {
+               char *product_name = wacom->hdev->name;
+-              if (hid_is_using_ll_driver(wacom->hdev, &usb_hid_driver)) {
++              if (hid_is_usb(wacom->hdev)) {
+                       struct usb_interface *intf = to_usb_interface(wacom->hdev->dev.parent);
+                       struct usb_device *dev = interface_to_usbdev(intf);
+                       product_name = dev->product;
+--- a/include/linux/hid.h
++++ b/include/linux/hid.h
+@@ -840,6 +840,11 @@ static inline bool hid_is_using_ll_drive
+       return hdev->ll_driver == driver;
+ }
++static inline bool hid_is_usb(struct hid_device *hdev)
++{
++      return hid_is_using_ll_driver(hdev, &usb_hid_driver);
++}
++
+ #define       PM_HINT_FULLON  1<<5
+ #define PM_HINT_NORMAL        1<<1
diff --git a/queue-5.15/hid-add-usb_hid-dependancy-on-some-usb-hid-drivers.patch b/queue-5.15/hid-add-usb_hid-dependancy-on-some-usb-hid-drivers.patch
new file mode 100644 (file)
index 0000000..a48ca4f
--- /dev/null
@@ -0,0 +1,54 @@
+From f237d9028f844a86955fc9da59d7ac4a5c55d7d5 Mon Sep 17 00:00:00 2001
+From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Date: Thu, 2 Dec 2021 12:48:19 +0100
+Subject: HID: add USB_HID dependancy on some USB HID drivers
+
+From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+commit f237d9028f844a86955fc9da59d7ac4a5c55d7d5 upstream.
+
+Some HID drivers are only for USB drivers, yet did not depend on
+CONFIG_USB_HID.  This was hidden by the fact that the USB functions were
+stubbed out in the past, but now that drivers are checking for USB
+devices properly, build errors can occur with some random
+configurations.
+
+Reported-by: kernel test robot <lkp@intel.com>
+Cc: stable@vger.kernel.org
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
+Link: https://lore.kernel.org/r/20211202114819.2511954-1-gregkh@linuxfoundation.org
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/hid/Kconfig |    6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+--- a/drivers/hid/Kconfig
++++ b/drivers/hid/Kconfig
+@@ -214,7 +214,7 @@ config HID_CHICONY
+ config HID_CORSAIR
+       tristate "Corsair devices"
+-      depends on HID && USB && LEDS_CLASS
++      depends on USB_HID && LEDS_CLASS
+       help
+       Support for Corsair devices that are not fully compliant with the
+       HID standard.
+@@ -553,7 +553,7 @@ config HID_LENOVO
+ config HID_LOGITECH
+       tristate "Logitech devices"
+-      depends on HID
++      depends on USB_HID
+       depends on LEDS_CLASS
+       default !EXPERT
+       help
+@@ -919,7 +919,7 @@ config HID_SAITEK
+ config HID_SAMSUNG
+       tristate "Samsung InfraRed remote control or keyboards"
+-      depends on HID
++      depends on USB_HID
+       help
+       Support for Samsung InfraRed remote control or keyboards.
diff --git a/queue-5.15/hid-add-usb_hid-dependancy-to-hid-chicony.patch b/queue-5.15/hid-add-usb_hid-dependancy-to-hid-chicony.patch
new file mode 100644 (file)
index 0000000..06be6f9
--- /dev/null
@@ -0,0 +1,36 @@
+From d080811f27936f712f619f847389f403ac873b8f Mon Sep 17 00:00:00 2001
+From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Date: Fri, 3 Dec 2021 08:59:27 +0100
+Subject: HID: add USB_HID dependancy to hid-chicony
+
+From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+commit d080811f27936f712f619f847389f403ac873b8f upstream.
+
+The chicony HID driver only controls USB devices, yet did not have a
+dependancy on USB_HID.  This causes build errors on some configurations
+like sparc when building due to new changes to the chicony driver.
+
+Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
+Cc: stable@vger.kernel.org
+Cc: Jiri Kosina <jikos@kernel.org>
+Cc: Benjamin Tissoires <benjamin.tissoires@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
+Link: https://lore.kernel.org/r/20211203075927.2829218-1-gregkh@linuxfoundation.org
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/hid/Kconfig |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/hid/Kconfig
++++ b/drivers/hid/Kconfig
+@@ -207,7 +207,7 @@ config HID_CHERRY
+ config HID_CHICONY
+       tristate "Chicony devices"
+-      depends on HID
++      depends on USB_HID
+       default !EXPERT
+       help
+       Support for Chicony Tactical pad and special keys on Chicony keyboards.
diff --git a/queue-5.15/hid-add-usb_hid-dependancy-to-hid-prodikeys.patch b/queue-5.15/hid-add-usb_hid-dependancy-to-hid-prodikeys.patch
new file mode 100644 (file)
index 0000000..03ea4aa
--- /dev/null
@@ -0,0 +1,36 @@
+From 30cb3c2ad24b66fb7639a6d1f4390c74d6e68f94 Mon Sep 17 00:00:00 2001
+From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Date: Fri, 3 Dec 2021 09:12:31 +0100
+Subject: HID: add USB_HID dependancy to hid-prodikeys
+
+From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+commit 30cb3c2ad24b66fb7639a6d1f4390c74d6e68f94 upstream.
+
+The prodikeys HID driver only controls USB devices, yet did not have a
+dependancy on USB_HID.  This causes build errors on some configurations
+like nios2 when building due to new changes to the prodikeys driver.
+
+Reported-by: kernel test robot <lkp@intel.com>
+Cc: stable@vger.kernel.org
+Cc: Jiri Kosina <jikos@kernel.org>
+Cc: Benjamin Tissoires <benjamin.tissoires@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
+Link: https://lore.kernel.org/r/20211203081231.2856936-1-gregkh@linuxfoundation.org
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/hid/Kconfig |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/hid/Kconfig
++++ b/drivers/hid/Kconfig
+@@ -245,7 +245,7 @@ config HID_MACALLY
+ config HID_PRODIKEYS
+       tristate "Prodikeys PC-MIDI Keyboard support"
+-      depends on HID && SND
++      depends on USB_HID && SND
+       select SND_RAWMIDI
+       help
+       Support for Prodikeys PC-MIDI Keyboard device support.
diff --git a/queue-5.15/hid-bigbenff-prevent-null-pointer-dereference.patch b/queue-5.15/hid-bigbenff-prevent-null-pointer-dereference.patch
new file mode 100644 (file)
index 0000000..0459e4b
--- /dev/null
@@ -0,0 +1,32 @@
+From 918aa1ef104d286d16b9e7ef139a463ac7a296f0 Mon Sep 17 00:00:00 2001
+From: Benjamin Tissoires <benjamin.tissoires@redhat.com>
+Date: Thu, 2 Dec 2021 10:53:32 +0100
+Subject: HID: bigbenff: prevent null pointer dereference
+
+From: Benjamin Tissoires <benjamin.tissoires@redhat.com>
+
+commit 918aa1ef104d286d16b9e7ef139a463ac7a296f0 upstream.
+
+When emulating the device through uhid, there is a chance we don't have
+output reports and so report_field is null.
+
+Cc: stable@vger.kernel.org
+Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
+Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Link: https://lore.kernel.org/r/20211202095334.14399-3-benjamin.tissoires@redhat.com
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/hid/hid-bigbenff.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/hid/hid-bigbenff.c
++++ b/drivers/hid/hid-bigbenff.c
+@@ -191,7 +191,7 @@ static void bigben_worker(struct work_st
+               struct bigben_device, worker);
+       struct hid_field *report_field = bigben->report->field[0];
+-      if (bigben->removed)
++      if (bigben->removed || !report_field)
+               return;
+       if (bigben->work_led) {
diff --git a/queue-5.15/hid-check-for-valid-usb-device-for-many-hid-drivers.patch b/queue-5.15/hid-check-for-valid-usb-device-for-many-hid-drivers.patch
new file mode 100644 (file)
index 0000000..7bf067c
--- /dev/null
@@ -0,0 +1,390 @@
+From 93020953d0fa7035fd036ad87a47ae2b7aa4ae33 Mon Sep 17 00:00:00 2001
+From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Date: Wed, 1 Dec 2021 19:35:03 +0100
+Subject: HID: check for valid USB device for many HID drivers
+
+From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+commit 93020953d0fa7035fd036ad87a47ae2b7aa4ae33 upstream.
+
+Many HID drivers assume that the HID device assigned to them is a USB
+device as that was the only way HID devices used to be able to be
+created in Linux.  However, with the additional ways that HID devices
+can be created for many different bus types, that is no longer true, so
+properly check that we have a USB device associated with the HID device
+before allowing a driver that makes this assumption to claim it.
+
+Cc: Jiri Kosina <jikos@kernel.org>
+Cc: Benjamin Tissoires <benjamin.tissoires@redhat.com>
+Cc: Michael Zaidman <michael.zaidman@gmail.com>
+Cc: Stefan Achatz <erazor_de@users.sourceforge.net>
+Cc: Maxime Coquelin <mcoquelin.stm32@gmail.com>
+Cc: Alexandre Torgue <alexandre.torgue@foss.st.com>
+Cc: linux-input@vger.kernel.org
+Cc: stable@vger.kernel.org
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Tested-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
+[bentiss: amended for thrustmater.c hunk to apply]
+Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
+Link: https://lore.kernel.org/r/20211201183503.2373082-3-gregkh@linuxfoundation.org
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/hid/hid-chicony.c         |    3 +++
+ drivers/hid/hid-corsair.c         |    7 ++++++-
+ drivers/hid/hid-elan.c            |    2 +-
+ drivers/hid/hid-elo.c             |    3 +++
+ drivers/hid/hid-ft260.c           |    3 +++
+ drivers/hid/hid-holtek-kbd.c      |    9 +++++++--
+ drivers/hid/hid-holtek-mouse.c    |    9 +++++++++
+ drivers/hid/hid-lg.c              |   10 ++++++++--
+ drivers/hid/hid-prodikeys.c       |   10 ++++++++--
+ drivers/hid/hid-roccat-arvo.c     |    3 +++
+ drivers/hid/hid-roccat-isku.c     |    3 +++
+ drivers/hid/hid-roccat-kone.c     |    3 +++
+ drivers/hid/hid-roccat-koneplus.c |    3 +++
+ drivers/hid/hid-roccat-konepure.c |    3 +++
+ drivers/hid/hid-roccat-kovaplus.c |    3 +++
+ drivers/hid/hid-roccat-lua.c      |    3 +++
+ drivers/hid/hid-roccat-pyra.c     |    3 +++
+ drivers/hid/hid-roccat-ryos.c     |    3 +++
+ drivers/hid/hid-roccat-savu.c     |    3 +++
+ drivers/hid/hid-samsung.c         |    3 +++
+ drivers/hid/hid-sony.c            |    6 +++++-
+ drivers/hid/hid-thrustmaster.c    |    3 +++
+ drivers/hid/hid-uclogic-core.c    |    3 +++
+ 23 files changed, 92 insertions(+), 9 deletions(-)
+
+--- a/drivers/hid/hid-chicony.c
++++ b/drivers/hid/hid-chicony.c
+@@ -114,6 +114,9 @@ static int ch_probe(struct hid_device *h
+ {
+       int ret;
++      if (!hid_is_usb(hdev))
++              return -EINVAL;
++
+       hdev->quirks |= HID_QUIRK_INPUT_PER_APP;
+       ret = hid_parse(hdev);
+       if (ret) {
+--- a/drivers/hid/hid-corsair.c
++++ b/drivers/hid/hid-corsair.c
+@@ -553,7 +553,12 @@ static int corsair_probe(struct hid_devi
+       int ret;
+       unsigned long quirks = id->driver_data;
+       struct corsair_drvdata *drvdata;
+-      struct usb_interface *usbif = to_usb_interface(dev->dev.parent);
++      struct usb_interface *usbif;
++
++      if (!hid_is_usb(dev))
++              return -EINVAL;
++
++      usbif = to_usb_interface(dev->dev.parent);
+       drvdata = devm_kzalloc(&dev->dev, sizeof(struct corsair_drvdata),
+                              GFP_KERNEL);
+--- a/drivers/hid/hid-elan.c
++++ b/drivers/hid/hid-elan.c
+@@ -50,7 +50,7 @@ struct elan_drvdata {
+ static int is_not_elan_touchpad(struct hid_device *hdev)
+ {
+-      if (hdev->bus == BUS_USB) {
++      if (hid_is_usb(hdev)) {
+               struct usb_interface *intf = to_usb_interface(hdev->dev.parent);
+               return (intf->altsetting->desc.bInterfaceNumber !=
+--- a/drivers/hid/hid-elo.c
++++ b/drivers/hid/hid-elo.c
+@@ -230,6 +230,9 @@ static int elo_probe(struct hid_device *
+       int ret;
+       struct usb_device *udev;
++      if (!hid_is_usb(hdev))
++              return -EINVAL;
++
+       priv = kzalloc(sizeof(*priv), GFP_KERNEL);
+       if (!priv)
+               return -ENOMEM;
+--- a/drivers/hid/hid-ft260.c
++++ b/drivers/hid/hid-ft260.c
+@@ -915,6 +915,9 @@ static int ft260_probe(struct hid_device
+       struct ft260_get_chip_version_report version;
+       int ret;
++      if (!hid_is_usb(hdev))
++              return -EINVAL;
++
+       dev = devm_kzalloc(&hdev->dev, sizeof(*dev), GFP_KERNEL);
+       if (!dev)
+               return -ENOMEM;
+--- a/drivers/hid/hid-holtek-kbd.c
++++ b/drivers/hid/hid-holtek-kbd.c
+@@ -140,12 +140,17 @@ static int holtek_kbd_input_event(struct
+ static int holtek_kbd_probe(struct hid_device *hdev,
+               const struct hid_device_id *id)
+ {
+-      struct usb_interface *intf = to_usb_interface(hdev->dev.parent);
+-      int ret = hid_parse(hdev);
++      struct usb_interface *intf;
++      int ret;
++      if (!hid_is_usb(hdev))
++              return -EINVAL;
++
++      ret = hid_parse(hdev);
+       if (!ret)
+               ret = hid_hw_start(hdev, HID_CONNECT_DEFAULT);
++      intf = to_usb_interface(hdev->dev.parent);
+       if (!ret && intf->cur_altsetting->desc.bInterfaceNumber == 1) {
+               struct hid_input *hidinput;
+               list_for_each_entry(hidinput, &hdev->inputs, list) {
+--- a/drivers/hid/hid-holtek-mouse.c
++++ b/drivers/hid/hid-holtek-mouse.c
+@@ -62,6 +62,14 @@ static __u8 *holtek_mouse_report_fixup(s
+       return rdesc;
+ }
++static int holtek_mouse_probe(struct hid_device *hdev,
++                            const struct hid_device_id *id)
++{
++      if (!hid_is_usb(hdev))
++              return -EINVAL;
++      return 0;
++}
++
+ static const struct hid_device_id holtek_mouse_devices[] = {
+       { HID_USB_DEVICE(USB_VENDOR_ID_HOLTEK_ALT,
+                       USB_DEVICE_ID_HOLTEK_ALT_MOUSE_A067) },
+@@ -83,6 +91,7 @@ static struct hid_driver holtek_mouse_dr
+       .name = "holtek_mouse",
+       .id_table = holtek_mouse_devices,
+       .report_fixup = holtek_mouse_report_fixup,
++      .probe = holtek_mouse_probe,
+ };
+ module_hid_driver(holtek_mouse_driver);
+--- a/drivers/hid/hid-lg.c
++++ b/drivers/hid/hid-lg.c
+@@ -749,12 +749,18 @@ static int lg_raw_event(struct hid_devic
+ static int lg_probe(struct hid_device *hdev, const struct hid_device_id *id)
+ {
+-      struct usb_interface *iface = to_usb_interface(hdev->dev.parent);
+-      __u8 iface_num = iface->cur_altsetting->desc.bInterfaceNumber;
++      struct usb_interface *iface;
++      __u8 iface_num;
+       unsigned int connect_mask = HID_CONNECT_DEFAULT;
+       struct lg_drv_data *drv_data;
+       int ret;
++      if (!hid_is_usb(hdev))
++              return -EINVAL;
++
++      iface = to_usb_interface(hdev->dev.parent);
++      iface_num = iface->cur_altsetting->desc.bInterfaceNumber;
++
+       /* G29 only work with the 1st interface */
+       if ((hdev->product == USB_DEVICE_ID_LOGITECH_G29_WHEEL) &&
+           (iface_num != 0)) {
+--- a/drivers/hid/hid-prodikeys.c
++++ b/drivers/hid/hid-prodikeys.c
+@@ -798,12 +798,18 @@ static int pk_raw_event(struct hid_devic
+ static int pk_probe(struct hid_device *hdev, const struct hid_device_id *id)
+ {
+       int ret;
+-      struct usb_interface *intf = to_usb_interface(hdev->dev.parent);
+-      unsigned short ifnum = intf->cur_altsetting->desc.bInterfaceNumber;
++      struct usb_interface *intf;
++      unsigned short ifnum;
+       unsigned long quirks = id->driver_data;
+       struct pk_device *pk;
+       struct pcmidi_snd *pm = NULL;
++      if (!hid_is_usb(hdev))
++              return -EINVAL;
++
++      intf = to_usb_interface(hdev->dev.parent);
++      ifnum = intf->cur_altsetting->desc.bInterfaceNumber;
++
+       pk = kzalloc(sizeof(*pk), GFP_KERNEL);
+       if (pk == NULL) {
+               hid_err(hdev, "can't alloc descriptor\n");
+--- a/drivers/hid/hid-roccat-arvo.c
++++ b/drivers/hid/hid-roccat-arvo.c
+@@ -344,6 +344,9 @@ static int arvo_probe(struct hid_device
+ {
+       int retval;
++      if (!hid_is_usb(hdev))
++              return -EINVAL;
++
+       retval = hid_parse(hdev);
+       if (retval) {
+               hid_err(hdev, "parse failed\n");
+--- a/drivers/hid/hid-roccat-isku.c
++++ b/drivers/hid/hid-roccat-isku.c
+@@ -324,6 +324,9 @@ static int isku_probe(struct hid_device
+ {
+       int retval;
++      if (!hid_is_usb(hdev))
++              return -EINVAL;
++
+       retval = hid_parse(hdev);
+       if (retval) {
+               hid_err(hdev, "parse failed\n");
+--- a/drivers/hid/hid-roccat-kone.c
++++ b/drivers/hid/hid-roccat-kone.c
+@@ -749,6 +749,9 @@ static int kone_probe(struct hid_device
+ {
+       int retval;
++      if (!hid_is_usb(hdev))
++              return -EINVAL;
++
+       retval = hid_parse(hdev);
+       if (retval) {
+               hid_err(hdev, "parse failed\n");
+--- a/drivers/hid/hid-roccat-koneplus.c
++++ b/drivers/hid/hid-roccat-koneplus.c
+@@ -431,6 +431,9 @@ static int koneplus_probe(struct hid_dev
+ {
+       int retval;
++      if (!hid_is_usb(hdev))
++              return -EINVAL;
++
+       retval = hid_parse(hdev);
+       if (retval) {
+               hid_err(hdev, "parse failed\n");
+--- a/drivers/hid/hid-roccat-konepure.c
++++ b/drivers/hid/hid-roccat-konepure.c
+@@ -133,6 +133,9 @@ static int konepure_probe(struct hid_dev
+ {
+       int retval;
++      if (!hid_is_usb(hdev))
++              return -EINVAL;
++
+       retval = hid_parse(hdev);
+       if (retval) {
+               hid_err(hdev, "parse failed\n");
+--- a/drivers/hid/hid-roccat-kovaplus.c
++++ b/drivers/hid/hid-roccat-kovaplus.c
+@@ -501,6 +501,9 @@ static int kovaplus_probe(struct hid_dev
+ {
+       int retval;
++      if (!hid_is_usb(hdev))
++              return -EINVAL;
++
+       retval = hid_parse(hdev);
+       if (retval) {
+               hid_err(hdev, "parse failed\n");
+--- a/drivers/hid/hid-roccat-lua.c
++++ b/drivers/hid/hid-roccat-lua.c
+@@ -160,6 +160,9 @@ static int lua_probe(struct hid_device *
+ {
+       int retval;
++      if (!hid_is_usb(hdev))
++              return -EINVAL;
++
+       retval = hid_parse(hdev);
+       if (retval) {
+               hid_err(hdev, "parse failed\n");
+--- a/drivers/hid/hid-roccat-pyra.c
++++ b/drivers/hid/hid-roccat-pyra.c
+@@ -449,6 +449,9 @@ static int pyra_probe(struct hid_device
+ {
+       int retval;
++      if (!hid_is_usb(hdev))
++              return -EINVAL;
++
+       retval = hid_parse(hdev);
+       if (retval) {
+               hid_err(hdev, "parse failed\n");
+--- a/drivers/hid/hid-roccat-ryos.c
++++ b/drivers/hid/hid-roccat-ryos.c
+@@ -141,6 +141,9 @@ static int ryos_probe(struct hid_device
+ {
+       int retval;
++      if (!hid_is_usb(hdev))
++              return -EINVAL;
++
+       retval = hid_parse(hdev);
+       if (retval) {
+               hid_err(hdev, "parse failed\n");
+--- a/drivers/hid/hid-roccat-savu.c
++++ b/drivers/hid/hid-roccat-savu.c
+@@ -113,6 +113,9 @@ static int savu_probe(struct hid_device
+ {
+       int retval;
++      if (!hid_is_usb(hdev))
++              return -EINVAL;
++
+       retval = hid_parse(hdev);
+       if (retval) {
+               hid_err(hdev, "parse failed\n");
+--- a/drivers/hid/hid-samsung.c
++++ b/drivers/hid/hid-samsung.c
+@@ -152,6 +152,9 @@ static int samsung_probe(struct hid_devi
+       int ret;
+       unsigned int cmask = HID_CONNECT_DEFAULT;
++      if (!hid_is_usb(hdev))
++              return -EINVAL;
++
+       ret = hid_parse(hdev);
+       if (ret) {
+               hid_err(hdev, "parse failed\n");
+--- a/drivers/hid/hid-sony.c
++++ b/drivers/hid/hid-sony.c
+@@ -3000,7 +3000,6 @@ static int sony_probe(struct hid_device
+       sc->quirks = quirks;
+       hid_set_drvdata(hdev, sc);
+       sc->hdev = hdev;
+-      usbdev = to_usb_device(sc->hdev->dev.parent->parent);
+       ret = hid_parse(hdev);
+       if (ret) {
+@@ -3043,6 +3042,11 @@ static int sony_probe(struct hid_device
+       }
+       if (sc->quirks & (GHL_GUITAR_PS3WIIU | GHL_GUITAR_PS4)) {
++              if (!hid_is_usb(hdev))
++                      return -EINVAL;
++
++              usbdev = to_usb_device(sc->hdev->dev.parent->parent);
++
+               sc->ghl_urb = usb_alloc_urb(0, GFP_ATOMIC);
+               if (!sc->ghl_urb)
+                       return -ENOMEM;
+--- a/drivers/hid/hid-thrustmaster.c
++++ b/drivers/hid/hid-thrustmaster.c
+@@ -274,6 +274,9 @@ static int thrustmaster_probe(struct hid
+       int ret = 0;
+       struct tm_wheel *tm_wheel = 0;
++      if (!hid_is_usb(hdev))
++              return -EINVAL;
++
+       ret = hid_parse(hdev);
+       if (ret) {
+               hid_err(hdev, "parse failed with error %d\n", ret);
+--- a/drivers/hid/hid-uclogic-core.c
++++ b/drivers/hid/hid-uclogic-core.c
+@@ -164,6 +164,9 @@ static int uclogic_probe(struct hid_devi
+       struct uclogic_drvdata *drvdata = NULL;
+       bool params_initialized = false;
++      if (!hid_is_usb(hdev))
++              return -EINVAL;
++
+       /*
+        * libinput requires the pad interface to be on a different node
+        * than the pen, so use QUIRK_MULTI_INPUT for all tablets.
diff --git a/queue-5.15/hid-google-add-eel-usb-id.patch b/queue-5.15/hid-google-add-eel-usb-id.patch
new file mode 100644 (file)
index 0000000..60ee5ee
--- /dev/null
@@ -0,0 +1,41 @@
+From caff009098e6cf59fd6ac21c3a3befcc854978b4 Mon Sep 17 00:00:00 2001
+From: xiazhengqiao <xiazhengqiao@huaqin.corp-partner.google.com>
+Date: Fri, 3 Dec 2021 11:01:19 +0800
+Subject: HID: google: add eel USB id
+
+From: xiazhengqiao <xiazhengqiao@huaqin.corp-partner.google.com>
+
+commit caff009098e6cf59fd6ac21c3a3befcc854978b4 upstream.
+
+Add one additional hammer-like device.
+
+Signed-off-by: xiazhengqiao <xiazhengqiao@huaqin.corp-partner.google.com>
+Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
+Link: https://lore.kernel.org/r/20211203030119.28612-1-xiazhengqiao@huaqin.corp-partner.google.com
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/hid/hid-google-hammer.c |    2 ++
+ drivers/hid/hid-ids.h           |    1 +
+ 2 files changed, 3 insertions(+)
+
+--- a/drivers/hid/hid-google-hammer.c
++++ b/drivers/hid/hid-google-hammer.c
+@@ -586,6 +586,8 @@ static const struct hid_device_id hammer
+       { HID_DEVICE(BUS_USB, HID_GROUP_GENERIC,
+                    USB_VENDOR_ID_GOOGLE, USB_DEVICE_ID_GOOGLE_DON) },
+       { HID_DEVICE(BUS_USB, HID_GROUP_GENERIC,
++                   USB_VENDOR_ID_GOOGLE, USB_DEVICE_ID_GOOGLE_EEL) },
++      { HID_DEVICE(BUS_USB, HID_GROUP_GENERIC,
+                    USB_VENDOR_ID_GOOGLE, USB_DEVICE_ID_GOOGLE_HAMMER) },
+       { HID_DEVICE(BUS_USB, HID_GROUP_GENERIC,
+                    USB_VENDOR_ID_GOOGLE, USB_DEVICE_ID_GOOGLE_MAGNEMITE) },
+--- a/drivers/hid/hid-ids.h
++++ b/drivers/hid/hid-ids.h
+@@ -496,6 +496,7 @@
+ #define USB_DEVICE_ID_GOOGLE_MAGNEMITE        0x503d
+ #define USB_DEVICE_ID_GOOGLE_MOONBALL 0x5044
+ #define USB_DEVICE_ID_GOOGLE_DON      0x5050
++#define USB_DEVICE_ID_GOOGLE_EEL      0x5057
+ #define USB_VENDOR_ID_GOTOP           0x08f2
+ #define USB_DEVICE_ID_SUPER_Q2                0x007f
diff --git a/queue-5.15/hid-intel-ish-hid-ipc-only-enable-irq-wakeup-when-requested.patch b/queue-5.15/hid-intel-ish-hid-ipc-only-enable-irq-wakeup-when-requested.patch
new file mode 100644 (file)
index 0000000..5c2f079
--- /dev/null
@@ -0,0 +1,58 @@
+From 086e81f6b90e41a07a1a885bb11e93daa6915747 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Thomas=20Wei=C3=9Fschuh?= <linux@weissschuh.net>
+Date: Tue, 30 Nov 2021 07:01:17 +0100
+Subject: HID: intel-ish-hid: ipc: only enable IRQ wakeup when requested
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: Thomas Weißschuh <linux@weissschuh.net>
+
+commit 086e81f6b90e41a07a1a885bb11e93daa6915747 upstream.
+
+Fixes spurious wakeups from s0ix on Lenovo ThinkPad X1 Cargon Gen 9 on
+lid close.
+
+These wakeups are generated by interrupts from the ISH on changes to the
+lid status.
+
+By disabling the wake IRQ from the ISH we inhibit these spurious
+wakeups while keeping the resume from LID open through the ACPI
+interrupt.
+
+Reports on the Lenovo forums indicate that Lenovo ThinkPad X1 Yoga Gen6
+is also affected.
+
+Fixes: ae02e5d40d5f ("HID: intel-ish-hid: ipc layer")
+BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=214855
+Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
+Acked-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
+Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
+Link: https://lore.kernel.org/r/20211130060117.3026-1-linux@weissschuh.net
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/hid/intel-ish-hid/ipc/pci-ish.c |    6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+--- a/drivers/hid/intel-ish-hid/ipc/pci-ish.c
++++ b/drivers/hid/intel-ish-hid/ipc/pci-ish.c
+@@ -266,7 +266,8 @@ static void __maybe_unused ish_resume_ha
+       if (ish_should_leave_d0i3(pdev) && !dev->suspend_flag
+                       && IPC_IS_ISH_ILUP(fwsts)) {
+-              disable_irq_wake(pdev->irq);
++              if (device_may_wakeup(&pdev->dev))
++                      disable_irq_wake(pdev->irq);
+               ish_set_host_ready(dev);
+@@ -337,7 +338,8 @@ static int __maybe_unused ish_suspend(st
+                        */
+                       pci_save_state(pdev);
+-                      enable_irq_wake(pdev->irq);
++                      if (device_may_wakeup(&pdev->dev))
++                              enable_irq_wake(pdev->irq);
+               }
+       } else {
+               /*
diff --git a/queue-5.15/hid-quirks-add-quirk-for-the-microsoft-surface-3-type-cover.patch b/queue-5.15/hid-quirks-add-quirk-for-the-microsoft-surface-3-type-cover.patch
new file mode 100644 (file)
index 0000000..4762666
--- /dev/null
@@ -0,0 +1,51 @@
+From 9003fbe0f3674b972f56fa7e6bf3ac9dbfc4d0ec Mon Sep 17 00:00:00 2001
+From: Hans de Goede <hdegoede@redhat.com>
+Date: Sun, 28 Nov 2021 22:07:48 +0100
+Subject: HID: quirks: Add quirk for the Microsoft Surface 3 type-cover
+
+From: Hans de Goede <hdegoede@redhat.com>
+
+commit 9003fbe0f3674b972f56fa7e6bf3ac9dbfc4d0ec upstream.
+
+Add a HID_QUIRK_NO_INIT_REPORTS quirk for the
+Microsoft Surface 3 (non pro) type-cover.
+
+Trying to init the reports seems to confuse the type-cover and
+causes 2 issues:
+
+1. Despite hid-multitouch sending the command to switch the
+touchpad to multitouch mode, it keeps sending events on the
+mouse emulation interface.
+
+2. The touchpad completely stops sending events after a reboot.
+
+Adding the HID_QUIRK_NO_INIT_REPORTS quirk fixes both issues.
+
+Signed-off-by: Hans de Goede <hdegoede@redhat.com>
+Signed-off-by: Jiri Kosina <jkosina@suse.cz>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/hid/hid-ids.h    |    1 +
+ drivers/hid/hid-quirks.c |    1 +
+ 2 files changed, 2 insertions(+)
+
+--- a/drivers/hid/hid-ids.h
++++ b/drivers/hid/hid-ids.h
+@@ -881,6 +881,7 @@
+ #define USB_DEVICE_ID_MS_TOUCH_COVER_2   0x07a7
+ #define USB_DEVICE_ID_MS_TYPE_COVER_2    0x07a9
+ #define USB_DEVICE_ID_MS_POWER_COVER     0x07da
++#define USB_DEVICE_ID_MS_SURFACE3_COVER               0x07de
+ #define USB_DEVICE_ID_MS_XBOX_ONE_S_CONTROLLER        0x02fd
+ #define USB_DEVICE_ID_MS_PIXART_MOUSE    0x00cb
+ #define USB_DEVICE_ID_8BITDO_SN30_PRO_PLUS      0x02e0
+--- a/drivers/hid/hid-quirks.c
++++ b/drivers/hid/hid-quirks.c
+@@ -124,6 +124,7 @@ static const struct hid_device_id hid_qu
+       { HID_USB_DEVICE(USB_VENDOR_ID_MCS, USB_DEVICE_ID_MCS_GAMEPADBLOCK), HID_QUIRK_MULTI_INPUT },
+       { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_PIXART_MOUSE), HID_QUIRK_ALWAYS_POLL },
+       { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_POWER_COVER), HID_QUIRK_NO_INIT_REPORTS },
++      { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_SURFACE3_COVER), HID_QUIRK_NO_INIT_REPORTS },
+       { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_SURFACE_PRO_2), HID_QUIRK_NO_INIT_REPORTS },
+       { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TOUCH_COVER_2), HID_QUIRK_NO_INIT_REPORTS },
+       { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TYPE_COVER_2), HID_QUIRK_NO_INIT_REPORTS },
diff --git a/queue-5.15/hid-wacom-fix-problems-when-device-is-not-a-valid-usb-device.patch b/queue-5.15/hid-wacom-fix-problems-when-device-is-not-a-valid-usb-device.patch
new file mode 100644 (file)
index 0000000..a2ea761
--- /dev/null
@@ -0,0 +1,75 @@
+From 720ac467204a70308bd687927ed475afb904e11b Mon Sep 17 00:00:00 2001
+From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Date: Wed, 1 Dec 2021 19:35:02 +0100
+Subject: HID: wacom: fix problems when device is not a valid USB device
+
+From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+commit 720ac467204a70308bd687927ed475afb904e11b upstream.
+
+The wacom driver accepts devices of more than just USB types, but some
+code paths can cause problems if the device being controlled is not a
+USB device due to a lack of checking.  Add the needed checks to ensure
+that the USB device accesses are only happening on a "real" USB device,
+and not one on some other bus.
+
+Cc: Jiri Kosina <jikos@kernel.org>
+Cc: Benjamin Tissoires <benjamin.tissoires@redhat.com>
+Cc: linux-input@vger.kernel.org
+Cc: stable@vger.kernel.org
+Tested-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
+Link: https://lore.kernel.org/r/20211201183503.2373082-2-gregkh@linuxfoundation.org
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/hid/wacom_sys.c |   17 ++++++++++++-----
+ 1 file changed, 12 insertions(+), 5 deletions(-)
+
+--- a/drivers/hid/wacom_sys.c
++++ b/drivers/hid/wacom_sys.c
+@@ -726,7 +726,7 @@ static void wacom_retrieve_hid_descripto
+        * Skip the query for this type and modify defaults based on
+        * interface number.
+        */
+-      if (features->type == WIRELESS) {
++      if (features->type == WIRELESS && intf) {
+               if (intf->cur_altsetting->desc.bInterfaceNumber == 0)
+                       features->device_type = WACOM_DEVICETYPE_WL_MONITOR;
+               else
+@@ -2454,6 +2454,9 @@ static void wacom_wireless_work(struct w
+       wacom_destroy_battery(wacom);
++      if (!usbdev)
++              return;
++
+       /* Stylus interface */
+       hdev1 = usb_get_intfdata(usbdev->config->interface[1]);
+       wacom1 = hid_get_drvdata(hdev1);
+@@ -2733,8 +2736,6 @@ static void wacom_mode_change_work(struc
+ static int wacom_probe(struct hid_device *hdev,
+               const struct hid_device_id *id)
+ {
+-      struct usb_interface *intf = to_usb_interface(hdev->dev.parent);
+-      struct usb_device *dev = interface_to_usbdev(intf);
+       struct wacom *wacom;
+       struct wacom_wac *wacom_wac;
+       struct wacom_features *features;
+@@ -2769,8 +2770,14 @@ static int wacom_probe(struct hid_device
+       wacom_wac->hid_data.inputmode = -1;
+       wacom_wac->mode_report = -1;
+-      wacom->usbdev = dev;
+-      wacom->intf = intf;
++      if (hid_is_usb(hdev)) {
++              struct usb_interface *intf = to_usb_interface(hdev->dev.parent);
++              struct usb_device *dev = interface_to_usbdev(intf);
++
++              wacom->usbdev = dev;
++              wacom->intf = intf;
++      }
++
+       mutex_init(&wacom->lock);
+       INIT_DELAYED_WORK(&wacom->init_work, wacom_init_work);
+       INIT_WORK(&wacom->wireless_work, wacom_wireless_work);
index 6c381b9261066663dc9231f37882b7b2736507ed..6b5adb464ed2a6ccbf6b4e43e45a313e28e039e3 100644 (file)
@@ -1 +1,11 @@
 usb-gadget-uvc-fix-multiple-opens.patch
+hid-quirks-add-quirk-for-the-microsoft-surface-3-type-cover.patch
+hid-google-add-eel-usb-id.patch
+hid-intel-ish-hid-ipc-only-enable-irq-wakeup-when-requested.patch
+hid-add-hid_is_usb-function-to-make-it-simpler-for-usb-detection.patch
+hid-add-usb_hid-dependancy-to-hid-prodikeys.patch
+hid-add-usb_hid-dependancy-to-hid-chicony.patch
+hid-add-usb_hid-dependancy-on-some-usb-hid-drivers.patch
+hid-bigbenff-prevent-null-pointer-dereference.patch
+hid-wacom-fix-problems-when-device-is-not-a-valid-usb-device.patch
+hid-check-for-valid-usb-device-for-many-hid-drivers.patch