linux/drivers
Benjamin Tissoires 1989dada7c HID: input: ignore System Control application usages if not System Controls
Microsoft is reusing its report descriptor again and again, and part of it
looks like this:

0x05, 0x01,                    // Usage Page (Generic Desktop)        299
0x09, 0x80,                    // Usage (System Control)              301
0xa1, 0x01,                    // Collection (Application)            303
0x85, 0x03,                    //  Report ID (3)                      305
0x19, 0x00,                    //  Usage Minimum (0)                  307
0x29, 0xff,                    //  Usage Maximum (255)                309
0x15, 0x00,                    //  Logical Minimum (0)                311
0x26, 0xff, 0x00,              //  Logical Maximum (255)              313
0x81, 0x00,                    //  Input (Data,Arr,Abs)               316
0xc0,                          // End Collection                      318

While there is nothing wrong in term of processing, we do however blindly
map the full usage range (it's an array) from 0x00 to 0xff, which creates
some interesting axis, like ABS_X|Y, and a bunch of ABS_MISC + n.

While libinput and other stacks don't care that much (we can detect them),
joydev is very happy and attaches itself to the mouse or keyboard.

The problem is that joydev now handles the device as a joystick, but given
that we have a HID array, it sets all the ABS_* values to 0. And in its
world, 0 means -32767 (minimum value), which sends spurious events to games
(think Steam).

It looks like hid-microsoft tries to tackle the very same problem with its
.report_fixup callback. But fixing the report descriptor is an endless task
and is quite obfuscated.

So take the hammer, and decide that if the application is meant to be
System Control, any other usage not in the System Control range should
be ignored.

Link: https://bugzilla.redhat.com/show_bug.cgi?id=1325354
Link: https://bugzilla.kernel.org/show_bug.cgi?id=28912
Link: https://github.com/ValveSoftware/steam-for-linux/issues/3384
Link: https://bugzilla.redhat.com/show_bug.cgi?id=1325354
Link: https://bugzilla.kernel.org/show_bug.cgi?id=37982

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
2016-09-19 14:02:25 +02:00
..
accessibility
acpi xen: features and fixes for 4.8-rc0 2016-07-27 11:35:37 -07:00
amba
android
ata New LED class driver: 2016-07-27 14:03:52 -07:00
atm drivers: atm: nicstar: Use the correct function to free some resources 2016-07-19 11:30:26 -07:00
auxdisplay
base Merge branch 'akpm' (patches from Andrew) 2016-07-26 19:55:54 -07:00
bcma wireless-drivers-next patches for 4.8 2016-07-25 11:09:19 -07:00
block Merge branch 'work.misc' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2016-07-28 12:59:05 -07:00
bluetooth Bluetooth: btmrvl: reset is_suspending flag in failure path 2016-07-18 10:13:02 +02:00
bus
cdrom cdrom: support read sub-channel command in LBA format 2016-07-12 08:24:50 -07:00
char Fix a boot failure on systems with non-contiguous NUMA id's. 2016-07-28 13:46:25 -07:00
clk clk: at91: fix clk_programmable_set_parent() 2016-07-18 17:45:41 -07:00
clocksource clocksource/drivers/time-armada-370-xp: Fix return value check 2016-07-12 17:33:22 +02:00
connector connector: make cn_proc explicitly non-modular 2016-07-05 11:40:47 -07:00
cpufreq Power management material for v4.8-rc1 2016-07-26 17:29:07 -07:00
cpuidle cpuidle: introduce CPU_PM_CPU_IDLE_ENTER macro for ARM{32, 64} 2016-07-21 23:29:38 +02:00
crypto Merge branch 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 2016-07-26 13:40:17 -07:00
dax
dca
devfreq PM / devfreq: exynos-bus: add missing of_node_put after calling of_parse_phandle 2016-07-06 13:11:24 +09:00
dio
dma dmaengine: hsu: Export hsu_dma_get_status() 2016-06-25 14:30:42 -07:00
dma-buf
edac * Altera Arria10 ethernet FIFO buffer support (Thor Thayer) 2016-07-27 13:40:47 -07:00
eisa
extcon extcon: adc-jack: add suspend/resume support 2016-07-02 14:31:34 +09:00
firewire
firmware xen: features and fixes for 4.8-rc0 2016-07-27 11:35:37 -07:00
fmc
fpga
gpio This is the bulk of GPIO changes for the v4.8 kernel cycle. 2016-07-26 19:16:01 -07:00
gpu Merge branch 'work.misc' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2016-07-28 12:59:05 -07:00
hid HID: input: ignore System Control application usages if not System Controls 2016-09-19 14:02:25 +02:00
hsi HSI: omap_ssi: drop pm_runtime_irq_safe 2016-06-28 00:40:08 +02:00
hv
hwmon Merge branch 'i2c/for-4.8' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux 2016-07-27 14:19:25 -07:00
hwspinlock
hwtracing intel_th: Fixes -stable 2016-07-15 14:19:11 +09:00
i2c Merge branch 'i2c/for-4.8' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux 2016-07-27 14:19:25 -07:00
ide New LED class driver: 2016-07-27 14:03:52 -07:00
idle intel_idle: correct BXT support 2016-07-09 01:05:30 +02:00
iio Third set of IIO new device support, features and cleanups for the 4.8 cycle. 2016-07-14 12:05:29 +09:00
infiniband Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-07-24 00:53:32 -04:00
input Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input 2016-07-27 14:30:41 -07:00
iommu Add braces to avoid "ambiguous ‘else’" compiler warnings 2016-07-27 20:03:31 -07:00
ipack
irqchip Merge branch 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2016-07-25 21:35:03 -07:00
isdn
leds leds: is31fl32xx: define complete i2c_device_id table 2016-07-19 13:58:42 +02:00
lguest
lightnvm block: get rid of bio_rw and READA 2016-07-20 17:37:01 -06:00
macintosh powerpc: use the new LED disk activity trigger 2016-06-27 08:58:40 +02:00
mailbox
mcb
md - initially based on Jens' 'for-4.8/core' (given all the flag churn) and 2016-07-26 17:12:11 -07:00
media media updates for v4.8-rc1 2016-07-27 14:58:31 -07:00
memory
memstick memstick: don't allow REQ_TYPE_BLOCK_PC requests 2016-07-20 17:38:27 -06:00
message
mfd Merge remote-tracking branches 'regulator/topic/qcom-spmi', 'regulator/topic/rn5t618', 'regulator/topic/tps65218' and 'regulator/topic/twl' into regulator-next 2016-07-20 18:02:08 +01:00
misc Merge branch 'i2c/for-4.8' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux 2016-07-27 14:19:25 -07:00
mmc Merge branch 'for-4.8/drivers' of git://git.kernel.dk/linux-block 2016-07-26 15:37:51 -07:00
mtd Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2016-07-27 12:03:20 -07:00
net Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2016-07-27 12:03:20 -07:00
nfc NFC 4.8 pull request 2016-07-20 23:39:36 -07:00
ntb
nubus
nvdimm Merge branch 'for-4.8/drivers' of git://git.kernel.dk/linux-block 2016-07-26 15:37:51 -07:00
nvme Merge branch 'for-4.8/drivers' of git://git.kernel.dk/linux-block 2016-07-26 15:37:51 -07:00
nvmem nvmem: imx-ocotp: Fix assignment warning. 2016-06-25 07:42:55 -07:00
of Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2016-07-27 12:03:20 -07:00
oprofile
parisc
parport
pci Power management material for v4.8-rc1 2016-07-26 17:29:07 -07:00
pcmcia
perf drivers/perf: arm-pmu: Handle per-interrupt affinity mask 2016-07-08 17:39:55 +01:00
phy Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2016-07-27 12:03:20 -07:00
pinctrl This is the bulk of GPIO changes for the v4.8 kernel cycle. 2016-07-26 19:16:01 -07:00
platform platform-drivers-x86 for 4.8-1 2016-07-26 17:23:08 -07:00
pnp PNP material for v4.8-rc1 2016-07-26 18:27:20 -07:00
power power supply and reset changes for the v4.8 series 2016-07-26 19:49:09 -07:00
powercap powercap / RAPL: Add support for Ivy Bridge server 2016-06-25 03:00:58 +02:00
pps pps: do not crash when failed to register 2016-07-23 10:25:54 +09:00
ps3
ptp
pwm
rapidio
ras
regulator Merge remote-tracking branches 'regulator/topic/qcom-spmi', 'regulator/topic/rn5t618', 'regulator/topic/tps65218' and 'regulator/topic/twl' into regulator-next 2016-07-20 18:02:08 +01:00
remoteproc
reset
rpmsg
rtc
s390 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2016-07-27 12:03:20 -07:00
sbus
scsi Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2016-07-28 14:22:25 -07:00
sfi
sh
sn
soc
spi spi: Updates for v4.8 2016-07-27 14:11:43 -07:00
spmi
ssb
staging Merge branch 'salted-string-hash' 2016-07-28 12:26:31 -07:00
target Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2016-07-27 12:03:20 -07:00
tc
thermal
thunderbolt
tty mm: oom: add memcg to oom_control 2016-07-26 16:19:19 -07:00
uio
usb Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid 2016-07-28 14:30:16 -07:00
uwb
vfio
vhost tun: switch to use skb array for tx 2016-07-01 05:32:17 -04:00
video fbmon: remove unused function argument 2016-07-26 16:19:19 -07:00
virt
virtio mm: fix build warnings in <linux/compaction.h> 2016-07-26 16:19:19 -07:00
vlynq
vme
w1
watchdog
xen xen: features and fixes for 4.8-rc0 2016-07-27 11:35:37 -07:00
zorro
Kconfig
Makefile HSI changes for the v4.8 series 2016-07-27 15:18:53 -07:00