mirror of https://github.com/torvalds/linux.git
If matrix_keypad_stop() is executing and the keypad interrupt is triggered, disable_row_irqs() may be called by both matrix_keypad_interrupt() and matrix_keypad_stop() at the same time, causing interrupts to be disabled twice and the keypad being "stuck" after resuming. Take lock when setting keypad->stopped to ensure that ISR will not race with matrix_keypad_stop() disabling interrupts. Signed-off-by: Zhang Bo <zbsdta@126.com> Cc: stable@vger.kernel.org Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com> |
||
|---|---|---|
| .. | ||
| Kconfig | ||
| Makefile | ||
| adc-keys.c | ||
| adp5520-keys.c | ||
| adp5588-keys.c | ||
| adp5589-keys.c | ||
| amikbd.c | ||
| atakbd.c | ||
| atkbd.c | ||
| bcm-keypad.c | ||
| bf54x-keys.c | ||
| cap11xx.c | ||
| clps711x-keypad.c | ||
| cros_ec_keyb.c | ||
| davinci_keyscan.c | ||
| dlink-dir685-touchkeys.c | ||
| ep93xx_keypad.c | ||
| goldfish_events.c | ||
| gpio_keys.c | ||
| gpio_keys_polled.c | ||
| hil_kbd.c | ||
| hilkbd.c | ||
| hpps2atkbd.h | ||
| imx_keypad.c | ||
| ipaq-micro-keys.c | ||
| jornada680_kbd.c | ||
| jornada720_kbd.c | ||
| lkkbd.c | ||
| lm8323.c | ||
| lm8333.c | ||
| locomokbd.c | ||
| lpc32xx-keys.c | ||
| maple_keyb.c | ||
| matrix_keypad.c | ||
| max7359_keypad.c | ||
| mcs_touchkey.c | ||
| mpr121_touchkey.c | ||
| newtonkbd.c | ||
| nomadik-ske-keypad.c | ||
| nspire-keypad.c | ||
| omap-keypad.c | ||
| omap4-keypad.c | ||
| opencores-kbd.c | ||
| pmic8xxx-keypad.c | ||
| pxa27x_keypad.c | ||
| pxa930_rotary.c | ||
| qt1070.c | ||
| qt2160.c | ||
| samsung-keypad.c | ||
| sh_keysc.c | ||
| snvs_pwrkey.c | ||
| spear-keyboard.c | ||
| st-keyscan.c | ||
| stmpe-keypad.c | ||
| stowaway.c | ||
| sun4i-lradc-keys.c | ||
| sunkbd.c | ||
| tc3589x-keypad.c | ||
| tca6416-keypad.c | ||
| tca8418_keypad.c | ||
| tegra-kbc.c | ||
| tm2-touchkey.c | ||
| twl4030_keypad.c | ||
| w90p910_keypad.c | ||
| xtkbd.c | ||