linux-stable/drivers/tty
Daniel Thompson 512b938520 serial: kgdboc: Fix NMI-safety problems from keyboard reset code
commit b2aba15ad6 upstream.

Currently, when kdb is compiled with keyboard support, then we will use
schedule_work() to provoke reset of the keyboard status.  Unfortunately
schedule_work() gets called from the kgdboc post-debug-exception
handler.  That risks deadlock since schedule_work() is not NMI-safe and,
even on platforms where the NMI is not directly used for debugging, the
debug trap can have NMI-like behaviour depending on where breakpoints
are placed.

Fix this by using the irq work system, which is NMI-safe, to defer the
call to schedule_work() to a point when it is safe to call.

Reported-by: Liuye <liu.yeC@h3c.com>
Closes: https://lore.kernel.org/all/20240228025602.3087748-1-liu.yeC@h3c.com/
Cc: stable@vger.kernel.org
Reviewed-by: Douglas Anderson <dianders@chromium.org>
Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Link: https://lore.kernel.org/r/20240424-kgdboc_fix_schedule_work-v2-1-50f5a490aec5@linaro.org
Signed-off-by: Daniel Thompson <daniel.thompson@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2024-05-25 16:16:20 +02:00
..
hvc hvc/xen: fix error path in xen_hvc_init() to always register frontend driver 2023-11-28 16:46:34 +00:00
ipwireless
serdev
serial serial: kgdboc: Fix NMI-safety problems from keyboard reset code 2024-05-25 16:16:20 +02:00
vt vt: fix memory overlapping when deleting chars in the buffer 2024-04-13 12:50:09 +02:00
Kconfig
Makefile
amiserial.c
cyclades.c treewide: Remove uninitialized_var() usage 2023-08-11 11:45:01 +02:00
ehv_bytechan.c
goldfish.c tty: drivers/tty/, stop using tty_schedule_flip() 2022-07-29 17:10:37 +02:00
isicom.c treewide: Remove uninitialized_var() usage 2023-08-11 11:45:01 +02:00
mips_ejtag_fdc.c
moxa.c tty: drivers/tty/, stop using tty_schedule_flip() 2022-07-29 17:10:37 +02:00
moxa.h
mxser.c mxser: fix xmit_buf leak in activate when LSR == 0xff 2022-04-15 14:14:51 +02:00
mxser.h
n_gsm.c tty: n_gsm: require CAP_NET_ADMIN to attach N_GSM0710 ldisc 2024-04-13 12:50:16 +02:00
n_hdlc.c
n_null.c
n_r3964.c
n_tracerouter.c
n_tracesink.c
n_tracesink.h
n_tty.c n_tty: wake up poll(POLLRDNORM) on receiving data 2022-02-16 12:51:46 +01:00
nozomi.c
pty.c tty: use new tty_insert_flip_string_and_push_buffer() in pty_write() 2022-07-29 17:10:37 +02:00
rocket.c
rocket.h
rocket_int.h
synclink.c
synclink_gt.c tty: synclink_gt: Fix null-pointer-dereference in slgt_clean() 2022-06-14 16:59:36 +02:00
synclinkmp.c
sysrq.c
tty_audit.c
tty_baudrate.c
tty_buffer.c tty: use new tty_insert_flip_string_and_push_buffer() in pty_write() 2022-07-29 17:10:37 +02:00
tty_io.c tty: Prevent writing chars during tcsetattr TCSADRAIN/FLUSH 2023-05-17 11:13:27 +02:00
tty_ioctl.c tty: Prevent writing chars during tcsetattr TCSADRAIN/FLUSH 2023-05-17 11:13:27 +02:00
tty_jobctrl.c tty: tty_jobctrl: fix pid memleak in disassociate_ctty() 2023-11-20 10:29:19 +01:00
tty_ldisc.c
tty_ldsem.c
tty_mutex.c
tty_port.c
vcc.c tty: vcc: Add check for kstrdup() in vcc_probe() 2023-11-28 16:46:32 +00:00