linux-stable/drivers/tty
Thomas Weißschuh ae3419fbac vc_screen: don't clobber return value in vcs_read
Commit 226fae124b ("vc_screen: move load of struct vc_data pointer in
vcs_read() to avoid UAF") moved the call to vcs_vc() into the loop.

While doing this it also moved the unconditional assignment of

	ret = -ENXIO;

This unconditional assignment was valid outside the loop but within it
it clobbers the actual value of ret.

To avoid this only assign "ret = -ENXIO" when actually needed.

[ Also, the 'goto unlock_out" needs to be just a "break", so that it
  does the right thing when it exits on later iterations when partial
  success has happened - Linus ]

Reported-by: Storm Dragon <stormdragon2976@gmail.com>
Link: https://lore.kernel.org/lkml/Y%2FKS6vdql2pIsCiI@hotmail.com/
Fixes: 226fae124b ("vc_screen: move load of struct vc_data pointer in vcs_read() to avoid UAF")
Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
Link: https://lore.kernel.org/lkml/64981d94-d00c-4b31-9063-43ad0a384bde@t-8ch.de/
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2023-02-27 18:35:28 -08:00
..
hvc hvcs: Synchronize hotplug remove with port free 2023-02-08 13:09:15 +01:00
ipwireless
serdev driver core: make struct device_type.uevent() take a const * 2023-01-27 13:45:36 +01:00
serial Driver core changes for 6.3-rc1 2023-02-24 12:58:55 -08:00
vt vc_screen: don't clobber return value in vcs_read 2023-02-27 18:35:28 -08:00
Kconfig tty: Allow TIOCSTI to be disabled 2022-11-03 01:58:03 +01:00
Makefile
amiserial.c tty: Call ->dtr_rts() parameter active consistently 2023-01-19 16:04:35 +01:00
ehv_bytechan.c tty: evh_bytechan: Replace NO_IRQ by 0 2022-11-02 08:10:42 +01:00
goldfish.c tty: goldfish: Fix free_irq() on remove 2022-06-10 13:31:31 +02:00
mips_ejtag_fdc.c serial: Convert SERIAL_XMIT_SIZE to UART_XMIT_SIZE 2022-06-27 14:41:31 +02:00
moxa.c tty: moxa: Rename dtr/rts parameters/variables to active 2023-01-19 16:04:35 +01:00
mxser.c tty: Call ->dtr_rts() parameter active consistently 2023-01-19 16:04:35 +01:00
n_gsm.c tty: n_gsm: add keep alive support 2023-02-16 13:50:50 +01:00
n_hdlc.c tty: n_hdlc: remove HDLC_MAGIC 2022-09-22 16:12:34 +02:00
n_null.c
n_tty.c n_tty: Rename tail to old_tail in n_tty_read() 2022-11-22 17:51:34 +01:00
nozomi.c
pty.c tty: Make ->set_termios() old ktermios const 2022-08-30 14:22:35 +02:00
rpmsg_tty.c
synclink_gt.c tty: Call ->dtr_rts() parameter active consistently 2023-01-19 16:04:35 +01:00
sysrq.c treewide: Convert del_timer*() to timer_shutdown*() 2022-12-25 13:38:09 -08:00
tty.h tty: Move sysctl setup into "core" tty logic 2022-11-03 01:58:03 +01:00
tty_audit.c
tty_baudrate.c tty: Fix comment style in tty_termios_input_baud_rate() 2022-08-30 14:22:34 +02:00
tty_buffer.c tty: Convert tty_buffer flags to bool 2022-11-09 13:02:16 +01:00
tty_io.c tty: fix out-of-bounds access in tty_driver_lookup_tty() 2023-01-19 15:04:56 +01:00
tty_ioctl.c tty: Return bool from tty_termios_hw_change() 2023-01-19 16:04:35 +01:00
tty_jobctrl.c signal: Replace __group_send_sig_info with send_signal_locked 2022-05-11 14:33:17 -05:00
tty_ldisc.c tty: Move sysctl setup into "core" tty logic 2022-11-03 01:58:03 +01:00
tty_ldsem.c
tty_mutex.c tty: remove TTY_MAGIC 2022-09-22 16:12:34 +02:00
tty_port.c tty: Convert ->dtr_rts() to take bool argument 2023-01-19 16:04:35 +01:00
ttynull.c
vcc.c termios: start unifying non-UAPI parts of asm/termios.h 2022-09-09 10:44:34 +02:00