linux/drivers/tty/serial
Johan Hovold e0830dbf71 serial: core: fix console port-lock regression
Fix the port-lock initialisation regression introduced by commit
a3cb39d258 ("serial: core: Allow detach and attach serial device for
console") by making sure that the lock is again initialised during
console setup.

The console may be registered before the serial controller has been
probed in which case the port lock needs to be initialised during
console setup by a call to uart_set_options(). The console-detach
changes introduced a regression in several drivers by effectively
removing that initialisation by not initialising the lock when the port
is used as a console (which is always the case during console setup).

Add back the early lock initialisation and instead use a new
console-reinit flag to handle the case where a console is being
re-attached through sysfs.

The question whether the console-detach interface should have been added
in the first place is left for another discussion.

Note that the console-enabled check in uart_set_options() is not
redundant because of kgdboc, which can end up reinitialising an already
enabled console (see commit 42b6a1baa3 ("serial_core: Don't
re-initialize a previously initialized spinlock.")).

Fixes: a3cb39d258 ("serial: core: Allow detach and attach serial device for console")
Cc: stable <stable@vger.kernel.org>     # 5.7
Signed-off-by: Johan Hovold <johan@kernel.org>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/r/20200909143101.15389-3-johan@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-09-16 13:22:44 +02:00
..
8250 TTY/Serial fixes for 5.9-rc3 2020-08-26 10:58:20 -07:00
cpm_uart tty: serial: cpm_uart: Fix behaviour for non existing GPIOs 2020-06-27 13:50:51 +02:00
jsm tty: serial: Replace HTTP links with HTTPS ones 2020-07-21 20:04:54 +02:00
21285.c tty: serial: 21285: stop using the unused[] variable from struct uart_port 2019-12-19 20:10:28 +01:00
altera_jtaguart.c serial: altera_jtaguart: Replace HTTP links with HTTPS ones 2020-07-21 20:04:54 +02:00
altera_uart.c
amba-pl010.c tty/serial: Migrate amba-pl01* to use has_sysrq 2019-12-18 15:04:44 +01:00
amba-pl011.c serial: pl011: Fix oops on -EPROBE_DEFER 2020-08-18 13:32:27 +02:00
amba-pl011.h
apbuart.c tty/serial: Migrate apbuart to use has_sysrq 2019-12-18 15:04:44 +01:00
apbuart.h
ar933x_uart.c serial: Allow uart_get_rs485_mode() to return errno 2020-05-15 14:47:05 +02:00
arc_uart.c tty/serial: Migrate arc_uart to use has_sysrq 2019-12-18 15:04:45 +01:00
atmel_serial.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
atmel_serial.h tty: serial: Use the correct style for SPDX License Identifier 2020-03-07 09:52:01 +01:00
bcm63xx_uart.c Revert "tty: serial: bcm63xx: fix missing clk_put() in bcm63xx_uart" 2020-05-04 11:49:57 +02:00
clps711x.c tty/serial: Migrate clps711x to use has_sysrq 2019-12-18 15:04:46 +01:00
digicolor-usart.c
dz.c TTY/Serial driver updates for 5.6-rc1 2020-01-29 10:13:27 -08:00
dz.h
earlycon-arm-semihost.c
earlycon-riscv-sbi.c
earlycon.c serial: earlycon: prefer EARLYCON_DECLARE() variant 2020-03-07 09:52:01 +01:00
efm32-uart.c tty: serial: efm32: fix spelling mistake "reserverd" -> "reserved" 2020-02-19 11:38:58 +01:00
fsl_linflexuart.c tty/serial: Migrate fsl_linflexuart to use has_sysrq 2019-12-18 15:04:48 +01:00
fsl_lpuart.c tty: serial: fsl_lpuart: minimum baud rate support 2020-06-27 13:52:29 +02:00
icom.c
icom.h tty: serial: Use the correct style for SPDX License Identifier 2020-03-07 09:52:01 +01:00
ifx6x60.c tty: serial: ifx6x60: Convert to GPIO descriptors 2020-03-12 10:03:54 +01:00
ifx6x60.h tty: serial: ifx6x60: Convert to GPIO descriptors 2020-03-12 10:03:54 +01:00
imx_earlycon.c tty: serial: imx: add imx earlycon driver 2020-07-29 17:11:02 +02:00
imx.c tty: serial: imx: enable imx serial console port as module 2020-07-29 17:10:59 +02:00
ip22zilog.c tty/serial: Migrate ip22zilog to use has_sysrq 2019-12-18 15:04:50 +01:00
ip22zilog.h
Kconfig tty: serial: imx: add dependence and build for earlycon 2020-08-18 13:54:34 +02:00
kgdb_nmi.c kdb: Switch to use safer dbg_io_ops over console APIs 2020-06-26 15:40:16 +01:00
kgdboc.c Linux 5.8-rc6 2020-07-20 09:39:11 +02:00
lantiq.c serial: lantiq: Make driver modular 2020-05-15 12:22:19 +02:00
lpc32xx_hs.c serial: lpc32xx_hs: Drop surplus include 2020-04-16 16:12:33 +02:00
Makefile tty: serial: imx: add dependence and build for earlycon 2020-08-18 13:54:34 +02:00
max310x.c
max3100.c
mcf.c
men_z135_uart.c
meson_uart.c TTY/Serial driver updates for 5.6-rc1 2020-01-29 10:13:27 -08:00
milbeaut_usio.c tty/serial: Migrate milbeaut_usio to use has_sysrq 2019-12-18 15:04:51 +01:00
mpc52xx_uart.c tty/serial: mpc52xx_uart: Don't zero port->sysrq 2019-12-18 15:04:52 +01:00
mps2-uart.c
msm_serial.c serial: msm_serial: add sparse context annotation 2020-07-24 10:44:27 +02:00
mux.c TTY/Serial driver updates for 5.6-rc1 2020-01-29 10:13:27 -08:00
mvebu-uart.c tty:serial:mvebu-uart:fix a wrong return 2020-03-05 21:26:34 +01:00
mxs-auart.c serial: mxs-auart: add missed iounmap() in probe failure and remove 2020-07-10 14:44:46 +02:00
omap-serial.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
owl-uart.c tty: serial: owl: add "much needed" clk_prepare_enable() 2020-04-23 15:46:30 +02:00
pch_uart.c serial: pch_uart: use generic power management 2020-07-21 20:04:54 +02:00
pic32_uart.c serial: pic32_uart: Use uart_console() helper 2020-03-12 10:00:22 +01:00
pic32_uart.h tty: serial: Use the correct style for SPDX License Identifier 2020-03-07 09:52:01 +01:00
pmac_zilog.c serial: pmac_zilog: add sparse context annotation 2020-07-24 10:44:27 +02:00
pmac_zilog.h
pnx8xxx_uart.c tty/serial: Migrate pnx8xxx_uart to use has_sysrq 2019-12-18 15:04:57 +01:00
pxa.c tty/serial: Migrate pxa to use has_sysrq 2019-12-18 15:04:57 +01:00
qcom_geni_serial.c tty: serial: qcom_geni_serial: Drop __init from qcom_geni_console_setup 2020-08-18 13:25:58 +02:00
rda-uart.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
rp2.c
sa1100.c tty/serial: Migrate sa1100 to use has_sysrq 2019-12-18 15:04:59 +01:00
samsung_tty.c serial: samsung: Removes the IRQ not found warning 2020-08-18 13:53:42 +02:00
sb1250-duart.c TTY/Serial driver updates for 5.6-rc1 2020-01-29 10:13:27 -08:00
sc16is7xx.c sched,serial: Convert to sched_set_fifo() 2020-06-15 14:10:23 +02:00
sccnxp.c tty/serial: Migrate sccnxp to use has_sysrq 2019-12-18 15:05:00 +01:00
serial_core.c serial: core: fix console port-lock regression 2020-09-16 13:22:44 +02:00
serial_mctrl_gpio.c
serial_mctrl_gpio.h tty: serial: Use the correct style for SPDX License Identifier 2020-03-07 09:52:01 +01:00
serial_txx9.c tty/serial: Migrate serial_txx9 to use has_sysrq 2019-12-18 15:05:01 +01:00
serial-tegra.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
sh-sci.c Revert "serial: sh-sci: Initialize spinlock for uart console" 2020-07-21 18:21:49 +02:00
sh-sci.h serial: sh-sci: Drop unused include 2020-04-16 16:13:34 +02:00
sifive.c Revert "tty: serial: add missing spin_lock_init for SiFive serial console" 2020-07-21 18:21:49 +02:00
sirfsoc_uart.c
sirfsoc_uart.h tty: serial: Use the correct style for SPDX License Identifier 2020-03-07 09:52:01 +01:00
sprd_serial.c serial: sprd: remove redundant sprd_port cleanup 2020-03-18 12:20:04 +01:00
st-asc.c tty: st-asc: switch to using devm_gpiod_get() 2020-01-10 14:01:33 +01:00
stm32-usart.c serial: stm32: avoid kernel warning on absence of optional IRQ 2020-08-18 13:32:28 +02:00
stm32-usart.h tty: serial: Add modem control gpio support for STM32 UART 2020-05-15 12:24:15 +02:00
suncore.c
sunhv.c Revert "serial: sunhv: Initialize lock for non-registered console" 2020-07-21 18:21:49 +02:00
sunsab.c serial: sunsab: Return proper error code from console ->setup() hook 2020-06-25 14:21:28 +02:00
sunsab.h
sunsu.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
sunzilog.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
sunzilog.h
tegra-tcu.c
timbuart.c
timbuart.h tty: serial: Use the correct style for SPDX License Identifier 2020-03-07 09:52:01 +01:00
uartlite.c tty: serial: uartlite: Replace HTTP links with HTTPS ones 2020-07-21 20:04:54 +02:00
ucc_uart.c ARM: SoC-related driver updates 2020-02-08 14:04:19 -08:00
vr41xx_siu.c tty/serial: Migrate vr41xx_siu to use has_sysrq 2019-12-18 15:05:09 +01:00
vt8500_serial.c tty/serial: Migrate vt8500_serial to use has_sysrq 2019-12-18 15:05:09 +01:00
xilinx_uartps.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
zs.c TTY/Serial driver updates for 5.6-rc1 2020-01-29 10:13:27 -08:00
zs.h