linux/drivers/media/rc
Sean Young 53a62800ef media: rc: mce_kbd decoder: fix race condition
The MCE keyboard sends both key down and key up events. We have a timeout
handler mce_kbd_rx_timeout() in case the keyup event is never received;
however, this may race with new key down events from occurring.

The race is that key down scancode arrives and key down events are
generated. The timeout handler races this and generates key up events
straight afterwards. Since the keyboard generates scancodes every 100ms,
most likely the keys will be repeated 100ms later, and now we have new
key down events and the user sees duplicate key presses.

Reported-by: Matthias Reichl <hias@horus.com>
Signed-off-by: Sean Young <sean@mess.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
2018-04-20 09:20:45 -04:00
..
img-ir media: img-ir: Drop METAG dependency 2018-03-05 16:34:25 +00:00
keymaps media: rc: add new imon protocol decoder and encoder 2018-03-21 11:12:29 -04:00
ati_remote.c [media] media: rc: constify usb_device_id 2017-10-04 15:06:09 -03:00
ene_ir.c media: rc: Convert timers to use timer_setup() 2017-10-31 06:31:44 -04:00
ene_ir.h [media] media: Drop FSF's postal address from the source code files 2017-01-27 11:38:09 -02:00
fintek-cir.c media: rc: rename RC_TYPE_* to RC_PROTO_* and RC_BIT_* to RC_PROTO_BIT_* 2017-08-20 10:02:48 -04:00
fintek-cir.h [media] media: Drop FSF's postal address from the source code files 2017-01-27 11:38:09 -02:00
gpio-ir-recv.c [media] media: rc: fix gpio-ir-receiver build failure 2017-10-05 10:16:21 -03:00
gpio-ir-tx.c media: rc: gpio-ir-tx: use ktime accessor functions 2017-08-31 05:35:54 -04:00
igorplugusb.c media: rc: Convert timers to use timer_setup() 2017-10-31 06:31:44 -04:00
iguanair.c media: rc: iguanair: simplify tx loop 2017-12-18 15:20:53 -05:00
imon_raw.c media: rc: new driver for early iMon device 2018-03-21 11:11:04 -04:00
imon.c media: imon: rename protocol from other to imon 2018-03-21 11:13:15 -04:00
ir-hix5hd2.c media: rc: ir-hix5hd2: fix error handling of clk_prepare_enable() 2018-02-14 13:35:05 -05:00
ir-imon-decoder.c media: rc: set timeout to smallest value required by enabled protocols 2018-04-20 09:14:31 -04:00
ir-jvc-decoder.c media: rc: set timeout to smallest value required by enabled protocols 2018-04-20 09:14:31 -04:00
ir-mce_kbd-decoder.c media: rc: mce_kbd decoder: fix race condition 2018-04-20 09:20:45 -04:00
ir-nec-decoder.c media: rc: set timeout to smallest value required by enabled protocols 2018-04-20 09:14:31 -04:00
ir-rc5-decoder.c media: rc: set timeout to smallest value required by enabled protocols 2018-04-20 09:14:31 -04:00
ir-rc6-decoder.c media: rc: set timeout to smallest value required by enabled protocols 2018-04-20 09:14:31 -04:00
ir-rx51.c [media] ir-rx51: port to rc-core 2017-01-30 14:25:04 -02:00
ir-sanyo-decoder.c media: rc: set timeout to smallest value required by enabled protocols 2018-04-20 09:14:31 -04:00
ir-sharp-decoder.c media: rc: set timeout to smallest value required by enabled protocols 2018-04-20 09:14:31 -04:00
ir-sony-decoder.c media: rc: set timeout to smallest value required by enabled protocols 2018-04-20 09:14:31 -04:00
ir-spi.c media: rc: ir-spi: fix duty cycle 2018-02-14 13:36:00 -05:00
ir-xmp-decoder.c media: rc: set timeout to smallest value required by enabled protocols 2018-04-20 09:14:31 -04:00
ite-cir.c media: rc: rename RC_TYPE_* to RC_PROTO_* and RC_BIT_* to RC_PROTO_BIT_* 2017-08-20 10:02:48 -04:00
ite-cir.h [media] media: Drop FSF's postal address from the source code files 2017-01-27 11:38:09 -02:00
Kconfig media: rc: add new imon protocol decoder and encoder 2018-03-21 11:12:29 -04:00
lirc_dev.c media: rc: per-protocol repeat period and minimum keyup timer 2018-04-20 09:16:55 -04:00
Makefile media: rc: add new imon protocol decoder and encoder 2018-03-21 11:12:29 -04:00
mceusb.c media: rc: mceusb: pid 0x0609 vid 0x031d does not under report carrier cycles 2018-03-21 14:03:03 -04:00
meson-ir.c media: rc: meson-ir: lower timeout and make configurable 2018-03-21 13:59:38 -04:00
mtk-cir.c media: rc: rename RC_TYPE_* to RC_PROTO_* and RC_BIT_* to RC_PROTO_BIT_* 2017-08-20 10:02:48 -04:00
nuvoton-cir.c media: rc: rename RC_TYPE_* to RC_PROTO_* and RC_BIT_* to RC_PROTO_BIT_* 2017-08-20 10:02:48 -04:00
nuvoton-cir.h media: rc: nuvoton: remove rudimentary transmit functionality 2017-08-20 09:47:57 -04:00
pwm-ir-tx.c media: rc: pwm-ir-tx: add new driver 2017-08-20 09:46:18 -04:00
rc-core-priv.h media: rc: mce_kbd decoder: fix race condition 2018-04-20 09:20:45 -04:00
rc-ir-raw.c media: rc: set timeout to smallest value required by enabled protocols 2018-04-20 09:14:31 -04:00
rc-loopback.c media: rc: rename RC_TYPE_* to RC_PROTO_* and RC_BIT_* to RC_PROTO_BIT_* 2017-08-20 10:02:48 -04:00
rc-main.c media: rc: mce_kbd protocol encodes two scancodes 2018-04-20 09:18:33 -04:00
redrat3.c [media] media: rc: constify usb_device_id 2017-10-04 15:06:09 -03:00
serial_ir.c media: serial_ir: Convert timers to use timer_setup() 2017-10-27 17:38:54 +02:00
sir_ir.c media: rc: sir_ir: detect presence of port 2017-11-15 08:57:34 -05:00
st_rc.c media: st_rc: Don't stay on an IRQ handler forever 2018-04-17 05:50:05 -04:00
streamzap.c media: drivers: remove "/**" from non-kernel-doc comments 2017-11-30 04:19:03 -05:00
sunxi-cir.c media: rc: update sunxi-ir driver to get base clock frequency from devicetree 2018-03-21 11:08:33 -04:00
tango-ir.c media: rc: Add driver for tango HW IR decoder 2017-10-11 12:41:08 -04:00
ttusbir.c media: rc: rename RC_TYPE_* to RC_PROTO_* and RC_BIT_* to RC_PROTO_BIT_* 2017-08-20 10:02:48 -04:00
winbond-cir.c media: winbond-cir: Fix pnp_irq's error checking for wbcir_probe 2017-12-14 10:35:28 -05:00
zx-irdec.c media: rc: rename RC_TYPE_* to RC_PROTO_* and RC_BIT_* to RC_PROTO_BIT_* 2017-08-20 10:02:48 -04:00