linux/drivers/tty/serial
Tony Lindgren 375806616f serial: 8250: Fix oops for port->pm on uart_change_pm()
[ Upstream commit dfe2aeb226 ]

Unloading a hardware specific 8250 driver can produce error "Unable to
handle kernel paging request at virtual address" about ten seconds after
unloading the driver. This happens on uart_hangup() calling
uart_change_pm().

Turns out commit 04e82793f0 ("serial: 8250: Reinit port->pm on port
specific driver unbind") was only a partial fix. If the hardware specific
driver has initialized port->pm function, we need to clear port->pm too.
Just reinitializing port->ops does not do this. Otherwise serial8250_pm()
will call port->pm() instead of serial8250_do_pm().

Fixes: 04e82793f0 ("serial: 8250: Reinit port->pm on port specific driver unbind")
Signed-off-by: Tony Lindgren <tony@atomide.com>
Link: https://lore.kernel.org/r/20230804131553.52927-1-tony@atomide.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
History 2023-08-23 17:32:52 +02:00
..
8250 serial: 8250: Fix oops for port->pm on uart_change_pm() 2023-08-23 17:32:52 +02:00
cpm_uart serial: cpm_uart: Fix a COMPILE_TEST dependency 2023-05-30 12:25:47 +01:00
jsm drivers: serial: jsm: fix some leaks in probe 2022-09-22 16:11:43 +02:00
21285.c tty: serial: use uart_port_tx_limited() 2022-11-03 03:32:40 +01:00
altera_jtaguart.c tty: serial: altera_jtaguart: remove struct altera_jtaguart 2022-11-22 17:51:42 +01:00
altera_uart.c serial: altera_uart: fix locking in polling mode 2022-11-23 09:38:42 +01:00
amba-pl010.c tty: serial: use uart_port_tx_limited() 2022-11-03 03:32:40 +01:00
amba-pl011.c serial: amba-pl011: fix high priority character transmission in rs486 mode 2023-01-19 14:54:58 +01:00
apbuart.c tty: serial: use uart_port_tx_limited() 2022-11-03 03:32:40 +01:00
apbuart.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
ar933x_uart.c serial: ar933x: Use uart_xmit_advance() 2022-11-03 03:35:41 +01:00
arc_uart.c serial: arc_uart: fix of_iomap leak in arc_serial_probe 2023-05-13 19:55:46 +09:00
atmel_serial.c serial: atmel: don't enable IRQs prematurely 2023-07-23 13:54:05 +02:00
atmel_serial.h tty: serial: atmel: Use FIELD_PREP/FIELD_GET 2022-09-22 16:32:25 +02:00
bcm63xx_uart.c serial: bcm63xx-uart: add polling support 2023-03-29 10:54:23 +02:00
clps711x.c serial: clps711x: Use uart_xmit_advance() 2022-11-03 03:35:41 +01:00
digicolor-usart.c serial: digicolor: Use uart_xmit_advance() 2022-11-03 03:35:41 +01:00
dz.c serial: dz: Use uart_xmit_advance() 2022-11-03 03:35:40 +01:00
dz.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
earlycon-riscv-sbi.c serial: make uart_console_write->putchar()'s character an unsigned char 2022-03-03 15:06:31 +01:00
earlycon-semihost.c serial: Rename earlycon semihost driver 2023-01-19 14:58:19 +01:00
earlycon.c earlycon: Let users set the clock frequency 2023-01-19 14:56:44 +01:00
fsl_linflexuart.c serial: linflexuart: Use uart_xmit_advance() 2022-11-03 03:35:41 +01:00
fsl_lpuart.c tty: serial: fsl_lpuart: Clear the error flags by writing 1 for lpuart32 platforms 2023-08-23 17:32:38 +02:00
icom.c serial: Make ->set_termios() old ktermios const 2022-08-30 14:22:35 +02:00
imx.c tty: serial: imx: fix rs485 rx after tx 2023-07-23 13:54:05 +02:00
imx_earlycon.c serial: make uart_console_write->putchar()'s character an unsigned char 2022-03-03 15:06:31 +01:00
ip22zilog.c serial: ip22zilog: Use uart_xmit_advance() 2022-11-03 03:35:41 +01:00
ip22zilog.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
Kconfig serial: cpm_uart: Fix a COMPILE_TEST dependency 2023-05-30 12:25:47 +01:00
kgdb_nmi.c tty: drop put_tty_driver 2021-07-27 12:17:21 +02:00
kgdboc.c tty: serial: kgdboc: fix mutex locking order for configure_kgdboc() 2023-01-16 16:44:53 +01:00
lantiq.c serial: lantiq: add missing interrupt ack 2023-06-06 14:45:34 +02:00
liteuart.c serial: liteuart: Remove a copy of UART id in private structure 2023-01-31 10:59:48 +01:00
lpc32xx_hs.c tty: serial: use uart_port_tx() helper 2022-11-03 03:32:40 +01:00
Makefile serial: Rename earlycon semihost driver 2023-01-19 14:58:19 +01:00
max310x.c serial: max310x: fix IO data corruption in batched operations 2023-04-20 13:46:13 +02:00
max3100.c serial: Make uart_handle_cts_change() status param bool active 2023-01-19 16:04:35 +01:00
mcf.c tty: serial: use uart_port_tx() helper 2022-11-03 03:32:40 +01:00
men_z135_uart.c serial: men_z135_uart: Use uart_xmit_advance() 2022-11-03 03:35:41 +01:00
meson_uart.c tty: serial: meson: Add a new compatible string for the G12A SoC 2023-03-09 17:21:02 +01:00
milbeaut_usio.c serial: milbeaut_usio: Use uart_xmit_advance() 2022-11-03 03:35:42 +01:00
mpc52xx_uart.c tty: serial: use uart_port_tx() helper 2022-11-03 03:32:40 +01:00
mps2-uart.c tty: serial: use uart_port_tx() helper 2022-11-03 03:32:40 +01:00
msm_serial.c serial: msm: add lock annotation to msm_set_baud_rate() 2023-01-19 15:53:09 +01:00
mux.c tty: serial: use uart_port_tx_limited() 2022-11-03 03:32:40 +01:00
mvebu-uart.c serial: mvebu-uart: Use uart_xmit_advance() 2022-11-03 03:35:42 +01:00
mxs-auart.c serial: Use of_property_read_bool() for boolean properties 2023-03-16 13:02:14 +01:00
omap-serial.c tty: serial: use uart_port_tx_limited() 2022-11-03 03:32:40 +01:00
owl-uart.c tty: serial: use uart_port_tx() helper 2022-11-03 03:32:40 +01:00
pch_uart.c tty: pcn_uart: fix memory leak with using debugfs_lookup() 2023-02-08 13:09:55 +01:00
pic32_uart.c serial: pic32: Add checks for devm_clk_get() in pic32_uart_probe() 2023-01-19 16:02:23 +01:00
pmac_zilog.c serial: pmac_zilog: Use uart_xmit_advance() 2022-11-03 03:35:42 +01:00
pmac_zilog.h serial: pmac_zilog: remove unused uart_pmac_port::termios_cache 2022-05-19 18:23:19 +02:00
pxa.c tty: serial: use uart_port_tx_limited() 2022-11-03 03:32:40 +01:00
qcom_geni_serial.c serial: qcom-geni: drop bogus runtime pm state update 2023-08-03 10:26:02 +02:00
rda-uart.c serial: rda: Use uart_xmit_advance() 2022-11-03 03:35:42 +01:00
rp2.c tty: serial: use uart_port_tx_limited() 2022-11-03 03:32:40 +01:00
sa1100.c tty: serial: use uart_port_tx() helper 2022-11-03 03:32:40 +01:00
samsung_tty.c tty: serial: samsung_tty: Fix a memory leak in s3c24xx_serial_getclk() when iterating clk 2023-07-23 13:54:05 +02:00
sb1250-duart.c serial: sb1250-duart: clean up after SIBYTE_BCM1x55 removal 2023-03-29 10:54:39 +02:00
sc16is7xx.c serial: sc16is7xx: Convert to i2c's .probe_new() 2023-03-09 21:58:53 +01:00
sccnxp.c serial: sccnxp: Use devm_clk_get_enabled() helper 2023-01-19 15:51:28 +01:00
serial-tegra.c serial: tegra: Add missing clk_disable_unprepare() in tegra_uart_hw_init() 2023-01-19 15:54:01 +01:00
serial_core.c serial: core: lock port for start_rx() in uart_resume_port() 2023-07-19 16:36:32 +02:00
serial_mctrl_gpio.c Documentation: serial: move GPIO kernel-doc to the functions 2022-07-28 10:37:42 +02:00
serial_mctrl_gpio.h serial: mctrl_gpio: add a new API to enable / disable wake_irq 2022-02-08 11:07:16 +01:00
serial_txx9.c tty: serial: use uart_port_tx_limited() 2022-11-03 03:32:40 +01:00
sh-sci.c tty: serial: sh-sci: Fix sleeping in atomic context 2023-08-03 10:26:02 +02:00
sh-sci.h tty: serial: sh-sci: Add support for tx end interrupt handling 2023-04-20 13:47:33 +02:00
sifive.c serial: sifive: Fix sifive_serial_console_setup() section 2023-08-03 10:26:02 +02:00
sprd_serial.c serial: sprd: Drop of_match_ptr for ID table 2023-03-16 13:02:17 +01:00
st-asc.c tty: serial: use uart_port_tx_limited() 2022-11-03 03:32:40 +01:00
stm32-usart.c serial: stm32: Ignore return value of uart_remove_one_port() in .remove() 2023-08-23 17:32:29 +02:00
stm32-usart.h serial: stm32: Remove unused struct stm32_port txdone element 2023-03-09 17:16:11 +01:00
suncore.c tty: Use of_node_name_{eq,prefix} for node name comparisons 2018-12-17 16:12:17 +01:00
sunhv.c tty/serial: Make ->dcd_change()+uart_handle_dcd_change() status bool active 2023-01-19 16:04:35 +01:00
sunplus-uart.c serial: sunplus-uart: Use uart_xmit_advance() 2022-11-03 03:35:43 +01:00
sunsab.c serial: sunsab: Fix error handling in sunsab_init() 2022-11-23 09:38:50 +01:00
sunsab.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
sunsu.c serial: sunsu: Use uart_xmit_advance() 2022-11-03 03:35:43 +01:00
sunzilog.c serial: Use of_property_present() for testing DT property presence 2023-03-16 13:02:11 +01:00
sunzilog.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
tegra-tcu.c Merge 7e2cd21e02 ("Merge tag 'tty-6.0-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty") into tty-next 2022-09-25 09:22:13 +02:00
timbuart.c serial: timbuart: Use uart_xmit_advance() 2022-11-03 03:35:43 +01:00
timbuart.h tty: serial: Use the correct style for SPDX License Identifier 2020-03-07 09:52:01 +01:00
uartlite.c serial: uartlite: Use uart_xmit_advance() 2022-11-03 03:35:43 +01:00
ucc_uart.c serial: ucc_uart: Use uart_circ_empty() 2023-03-29 10:53:57 +02:00
vt8500_serial.c serial: Fix a typo ("ignorning") 2022-11-09 13:03:12 +01:00
xilinx_uartps.c TTY/Serial driver changes for 6.2-rc1 2022-12-16 03:31:56 -08:00
zs.c serial: zs: Use uart_xmit_advance() 2022-11-03 03:35:43 +01:00
zs.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00