Grant Likely
039b66468f
HID: input: Fix devices that return multiple bytes in battery report
...
commit 4f57cace81438cc873a96f9f13f08298815c9b51 upstream.
Some devices, particularly the 3DConnexion Spacemouse wireless 3D
controllers, return more than just the battery capacity in the battery
report. The Spacemouse devices return an additional byte with a device
specific field. However, hidinput_query_battery_capacity() only
requests a 2 byte transfer.
When a spacemouse is connected via USB (direct wire, no wireless dongle)
and it returns a 3 byte report instead of the assumed 2 byte battery
report the larger transfer confuses and frightens the USB subsystem
which chooses to ignore the transfer. Then after 2 seconds assume the
device has stopped responding and reset it. This can be reproduced
easily by using a wired connection with a wireless spacemouse. The
Spacemouse will enter a loop of resetting every 2 seconds which can be
observed in dmesg.
This patch solves the problem by increasing the transfer request to 4
bytes instead of 2. The fix isn't particularly elegant, but it is simple
and safe to backport to stable kernels. A further patch will follow to
more elegantly handle battery reports that contain additional data.
Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
Cc: Darren Hart <darren@dvhart.com>
Cc: Jiri Kosina <jikos@kernel.org>
Cc: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Cc: stable@vger.kernel.org
Tested-by: Darren Hart <dvhart@infradead.org>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-08-19 08:15:53 +02:00
..
i2c-hid
HID: i2c-hid: add Mediacom FlexBook edge13 to descriptor override
2020-07-29 10:18:36 +02:00
intel-ish-hid
HID: intel-ish-hid: avoid bogus uninitialized-variable warning
2020-06-24 17:50:23 +02:00
usbhid
HID: usbhid: Fix race between usbhid_close() and usbhid_stop()
2020-05-14 07:58:24 +02:00
hid-a4tech.c
HID: input: fix a4tech horizontal wheel custom usage
2019-08-05 14:37:15 +02:00
hid-accutouch.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
hid-alps.c
HID: alps: support devices with report id 2
2020-07-29 10:18:36 +02:00
hid-apple.c
HID: apple: Disable Fn-key key-re-mapping on clone keyboards
2020-07-29 10:18:36 +02:00
hid-appleir.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282
2019-06-05 17:36:37 +02:00
hid-asus.c
HID: asus: Ignore Asus vendor-page usage-code 0xff events
2020-02-01 09:34:41 +00:00
hid-aureal.c
treewide: Add SPDX license identifier for more missed files
2019-05-21 10:50:45 +02:00
hid-axff.c
HID: Fix assumption that devices have inputs
2019-10-03 15:36:40 -04:00
hid-belkin.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
hid-betopff.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
hid-bigbenff.c
HID: hid-bigbenff: fix race condition for scheduled work during removal
2020-03-21 08:11:49 +01:00
hid-cherry.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
hid-chicony.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
hid-cmedia.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282
2019-06-05 17:36:37 +02:00
hid-core.c
HID: core: fix off-by-one memset in hid_report_raw_event()
2020-03-05 16:43:42 +01:00
hid-corsair.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
hid-cougar.c
HID: do not call hid_set_drvdata(hdev, NULL) in drivers
2019-08-22 17:11:58 +02:00
hid-cp2112.c
HID: cp2112: prevent sleeping function called from invalid context
2019-08-19 14:13:00 +02:00
hid-creative-sb0540.c
HID: sb0540: add support for Creative SB0540 IR receivers
2019-09-03 16:52:04 +02:00
hid-cypress.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
hid-debug.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156
2019-05-30 11:26:35 -07:00
hid-dr.c
HID: Fix assumption that devices have inputs
2019-10-03 15:36:40 -04:00
hid-elan.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
hid-elecom.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
hid-elo.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 307
2019-06-05 17:37:04 +02:00
hid-emsff.c
HID: Fix assumption that devices have inputs
2019-10-03 15:36:40 -04:00
hid-ezkey.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
hid-gaff.c
HID: Fix assumption that devices have inputs
2019-10-03 15:36:40 -04:00
hid-gembird.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
hid-generic.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
hid-gfrm.c
HID: do not call hid_set_drvdata(hdev, NULL) in drivers
2019-08-22 17:11:58 +02:00
hid-google-hammer.c
HID: google: add moonball USB id
2020-03-21 08:11:58 +01:00
hid-gt683r.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157
2019-05-30 11:26:37 -07:00
hid-gyration.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
hid-holtek-kbd.c
HID: holtek: test for sanity of intfdata
2019-08-05 14:18:42 +02:00
hid-holtek-mouse.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
hid-holtekff.c
HID: Fix assumption that devices have inputs
2019-10-03 15:36:40 -04:00
hid-hyperv.c
HID: hyperv: Use in-place iterator API in the channel callback
2019-10-01 14:49:41 -04:00
hid-icade.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
hid-ids.h
HID: quirks: Ignore Simply Automated UPB PIM
2020-07-22 09:33:08 +02:00
hid-input.c
HID: input: Fix devices that return multiple bytes in battery report
2020-08-19 08:15:53 +02:00
hid-ite.c
HID: ite: Only bind to keyboard USB interface on Acer SW5-012 keyboard dock
2020-03-05 16:43:42 +01:00
hid-jabra.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
hid-kensington.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
hid-keytouch.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
hid-kye.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
hid-lcpower.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
hid-led.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 372
2019-06-05 17:37:10 +02:00
hid-lenovo.c
HID: do not call hid_set_drvdata(hdev, NULL) in drivers
2019-08-22 17:11:58 +02:00
hid-lg.c
HID: logitech: Fix general protection fault caused by Logitech driver
2019-08-22 09:53:08 +02:00
hid-lg.h
hid-lg2ff.c
HID: Fix assumption that devices have inputs
2019-10-03 15:36:40 -04:00
hid-lg3ff.c
HID: Fix assumption that devices have inputs
2019-10-03 15:36:40 -04:00
hid-lg4ff.c
HID: Fix assumption that devices have inputs
2019-10-03 15:36:40 -04:00
hid-lg4ff.h
hid-lgff.c
HID: Fix assumption that devices have inputs
2019-10-03 15:36:40 -04:00
hid-logitech-dj.c
Merge branch 'for-5.4/logitech' into for-linus
2019-09-22 22:39:01 +02:00
hid-logitech-hidpp.c
HID: logitech-hidpp: avoid repeated "multiplier = " log messages
2020-07-22 09:33:08 +02:00
hid-macally.c
HID: macally: Add support for Macally ikey keyboard
2019-04-03 17:14:13 +02:00
hid-magicmouse.c
HID: magicmouse: do not set up autorepeat
2020-07-22 09:33:08 +02:00
hid-maltron.c
Support for Maltron L90 keyboard media keys
2019-01-14 20:11:01 +01:00
hid-mf.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157
2019-05-30 11:26:37 -07:00
hid-microsoft.c
HID: Fix assumption that devices have inputs
2019-10-03 15:36:40 -04:00
hid-monterey.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
hid-multitouch.c
HID: multitouch: enable multi-input as a quirk for some devices
2020-06-07 13:18:47 +02:00
hid-nti.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
hid-ntrig.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
hid-ortek.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
hid-penmount.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
hid-petalynx.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
hid-picolcd.h
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 265
2019-06-05 17:30:28 +02:00
hid-picolcd_backlight.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 265
2019-06-05 17:30:28 +02:00
hid-picolcd_cir.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 265
2019-06-05 17:30:28 +02:00
hid-picolcd_core.c
HID: do not call hid_set_drvdata(hdev, NULL) in drivers
2019-08-22 17:11:58 +02:00
hid-picolcd_debugfs.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 265
2019-06-05 17:30:28 +02:00
hid-picolcd_fb.c
video: fbdev: don't print error message on framebuffer_alloc() failure
2019-06-28 12:30:08 +02:00
hid-picolcd_lcd.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 265
2019-06-05 17:30:28 +02:00
hid-picolcd_leds.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 265
2019-06-05 17:30:28 +02:00
hid-pl.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156
2019-05-30 11:26:35 -07:00
hid-plantronics.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
hid-primax.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282
2019-06-05 17:36:37 +02:00
hid-prodikeys.c
HID: prodikeys: make array keys static const, makes object smaller
2019-10-01 16:21:04 +02:00
hid-quirks.c
HID: quirks: Ignore Simply Automated UPB PIM
2020-07-22 09:33:08 +02:00
hid-redragon.c
hid-retrode.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
hid-rmi.c
HID: rmi: Check that the RMI_STARTED bit is set before unregistering the RMI transport device
2020-01-04 19:18:13 +01:00
hid-roccat-arvo.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
hid-roccat-arvo.h
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
hid-roccat-common.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
hid-roccat-common.h
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
hid-roccat-isku.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
hid-roccat-isku.h
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
hid-roccat-kone.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
hid-roccat-kone.h
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
hid-roccat-koneplus.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
hid-roccat-koneplus.h
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
hid-roccat-konepure.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
hid-roccat-kovaplus.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
hid-roccat-kovaplus.h
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
hid-roccat-lua.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
hid-roccat-lua.h
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
hid-roccat-pyra.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
hid-roccat-pyra.h
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
hid-roccat-ryos.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
hid-roccat-savu.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
hid-roccat-savu.h
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
hid-roccat.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
hid-saitek.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
hid-samsung.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
hid-sensor-custom.c
*: convert stream-like files -> stream_open, even if they use noop_llseek
2019-07-14 16:09:19 +03:00
hid-sensor-hub.c
HID: do not call hid_set_drvdata(hdev, NULL) in drivers
2019-08-22 17:11:58 +02:00
hid-sjoy.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156
2019-05-30 11:26:35 -07:00
hid-sony.c
HID: sony: Fix for broken buttons on DS3 USB dongles
2020-06-07 13:18:47 +02:00
hid-speedlink.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
hid-steam.c
HID: steam: fixes race in handling device list.
2020-07-29 10:18:36 +02:00
hid-steelseries.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
hid-sunplus.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
hid-tivo.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
hid-tmff.c
HID: Fix assumption that devices have inputs
2019-10-03 15:36:40 -04:00
hid-topseed.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
hid-twinhan.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 178
2019-05-30 11:29:19 -07:00
hid-u2fzero.c
HID: u2fzero: fail probe if not using USB transport
2019-04-17 16:39:43 +02:00
hid-uclogic-core.c
Merge branch 'for-5.3/uclogic' into for-linus
2019-07-10 01:40:23 +02:00
hid-uclogic-params.c
Merge branch 'for-5.3/uclogic' into for-linus
2019-07-10 01:40:23 +02:00
hid-uclogic-params.h
HID: uclogic: Support Gray-coded rotary encoders
2019-02-21 12:00:54 +01:00
hid-uclogic-rdesc.c
HID: uclogic: Add support for Ugee G5
2019-02-21 12:00:54 +01:00
hid-uclogic-rdesc.h
HID: uclogic: Add support for Ugee G5
2019-02-21 12:00:54 +01:00
hid-udraw-ps3.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282
2019-06-05 17:36:37 +02:00
hid-viewsonic.c
HID: viewsonic: Support PD1011 signature pad
2019-02-21 12:00:53 +01:00
hid-waltop.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
hid-wiimote-core.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
hid-wiimote-debug.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
hid-wiimote-modules.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
hid-wiimote.h
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
hid-xinmo.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
hid-zpff.c
HID: Fix assumption that devices have inputs
2019-10-03 15:36:40 -04:00
hid-zydacron.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
hidraw.c
HID: hidraw, uhid: Always report EPOLLOUT
2020-01-17 19:48:15 +01:00
Kconfig
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/hid/hid
2019-09-23 12:18:13 -07:00
Makefile
HID: sb0540: add support for Creative SB0540 IR receivers
2019-09-03 16:52:04 +02:00
uhid.c
HID: hidraw, uhid: Always report EPOLLOUT
2020-01-17 19:48:15 +01:00
wacom.h
HID: wacom: generic: Treat serial number and related fields as unsigned
2019-11-06 21:37:29 +01:00
wacom_sys.c
HID: wacom: Read HID_DG_CONTACTMAX directly for non-generic devices
2020-05-14 07:58:24 +02:00
wacom_wac.c
HID: wacom: Report 2nd-gen Intuos Pro S center button status over BT
2020-05-14 07:58:24 +02:00
wacom_wac.h
Merge branches 'for-5.2/fixes', 'for-5.3/doc', 'for-5.3/ish', 'for-5.3/logitech' and 'for-5.3/wacom' into for-linus
2019-07-10 01:39:57 +02:00