linux/drivers/input/serio
Dmitry Vyukov 218c1f76b8 Input: psmouse - fix data race in __ps2_command
The data race happens on ps2dev->cmdcnt and ps2dev->cmdbuf contents.
__ps2_command reads that data concurrently with the interrupt handler. As
the result, for example, if a response arrives just after the timeout,
__ps2_command can copy out garbage from ps2dev->cmdbuf but then see that
ps2dev->cmdcnt is 0 and return success.

Stop the interrupt handler with serio_pause_rx() before reading the
results.

The data race was found with KernelThreadSanitizer (KTSAN).

Signed-off-by: Dmitry Vyukov <dvyukov@google.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
2015-09-29 16:08:29 -07:00
..
altera_ps2.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input 2014-12-17 10:06:02 -08:00
ambakmi.c Input: ambakmi - fix system PM by converting to modern callbacks 2015-07-16 10:36:08 -07:00
ams_delta_serio.c ARM: OMAP1: Move board-ams-delta.h from plat to mach 2012-09-20 15:02:19 -07:00
apbps2.c input: serio: drop owner assignment from platform_drivers 2014-10-20 16:20:41 +02:00
arc_ps2.c input: serio: drop owner assignment from platform_drivers 2014-10-20 16:20:41 +02:00
at32psif.c input: serio: drop owner assignment from platform_drivers 2014-10-20 16:20:41 +02:00
ct82c710.c input: serio: drop owner assignment from platform_drivers 2014-10-20 16:20:41 +02:00
gscps2.c Input: gscps2 - drop pci_ids dependency 2015-04-06 09:38:08 -07:00
hil_mlc.c Input: HIL - do not call tasklet_disable right before tasklet_kill 2012-11-25 00:10:13 -08:00
hp_sdc_mlc.c Input: serio HIL MLC - don't deref null, don't leak and return proper error 2010-11-20 13:38:18 -08:00
hp_sdc.c Input: hp_sdc - use del_timer_sync() in exit path 2014-03-23 17:25:40 -07:00
hyperv-keyboard.c Input: hyperv-keyboard - register as a wakeup source 2014-08-06 14:10:06 -07:00
i8042-io.h Input: i8042-io - fix up region handling on MIPS 2012-10-17 23:58:56 -07:00
i8042-ip22io.h
i8042-jazzio.h
i8042-ppcio.h Input: i8042 - remove SPRUCE support 2010-06-04 00:44:30 -07:00
i8042-snirm.h
i8042-sparcio.h input: serio: drop owner assignment from platform_drivers 2014-10-20 16:20:41 +02:00
i8042-unicore32io.h unicore32 io: redefine __REG(x) and re-use readl/writel funcs 2011-03-17 09:19:19 +08:00
i8042-x86ia64io.h Input: i8042 - add noloop quirk for Medion Akoya E7225 (MD98857) 2015-01-22 12:11:07 -08:00
i8042.c Input: i8042 - lower log level for "no controller" message 2015-09-05 11:11:48 -07:00
i8042.h Input: i8042 - add unmask_kbd_data option 2015-07-16 10:30:55 -07:00
Kconfig Input: arc_ps2 - add HAS_IOMEM dependency 2015-06-29 12:57:05 -07:00
libps2.c Input: psmouse - fix data race in __ps2_command 2015-09-29 16:08:29 -07:00
maceps2.c input: serio: drop owner assignment from platform_drivers 2014-10-20 16:20:41 +02:00
Makefile Input: serio - add support for Alwinner A10/A20 PS/2 controller 2015-01-26 23:10:13 -08:00
olpc_apsp.c input: serio: drop owner assignment from platform_drivers 2014-10-20 16:20:41 +02:00
parkbd.c Input: serio - fix blocking of parport 2015-09-27 17:32:34 -07:00
pcips2.c Input: delete non-required instances of include <linux/init.h> 2014-01-06 23:23:57 -08:00
ps2mult.c Input: serio - use module_serio_driver 2012-04-04 09:25:43 -07:00
q40kbd.c input: serio: drop owner assignment from platform_drivers 2014-10-20 16:20:41 +02:00
rpckbd.c input: serio: drop owner assignment from platform_drivers 2014-10-20 16:20:41 +02:00
sa1111ps2.c Input: remove use of __devexit 2012-11-24 00:05:38 -08:00
serio_raw.c Input: initialize device counter variables with -1 2014-12-03 15:27:17 -08:00
serio.c Input: i8042 - add unmask_kbd_data option 2015-07-16 10:30:55 -07:00
serport.c tty: remove buf parameter from tty_name() 2015-05-06 22:26:57 +02:00
sun4i-ps2.c Input: serio - add support for Alwinner A10/A20 PS/2 controller 2015-01-26 23:10:13 -08:00
xilinx_ps2.c input: serio: drop owner assignment from platform_drivers 2014-10-20 16:20:41 +02:00