mirror of
https://github.com/torvalds/linux.git
synced 2026-08-18 21:38:30 +02:00
It has been discovered that there is a potential deadlock between
the clock-change-notifier thread and the UART port suspending one:
CPU0 (suspend CPU/UART) CPU1 (update clock)
---- ----
lock(&port->mutex);
lock((work_completion)(&data->clk_work));
lock(&port->mutex);
lock((work_completion)(&data->clk_work));
*** DEADLOCK ***
The best way to fix this is to eliminate the CPU0
port->mutex/work-completion scenario. So we suggest to register and
unregister the clock-notifier during the DW APB UART port probe/remove
procedures, instead of doing that at the points of the port
startup/shutdown.
Link: https://lore.kernel.org/linux-serial/f1cd5c75-9cda-6896-a4e2-42c5bfc3f5c3@redhat.com
Fixes:
|
||
|---|---|---|
| .. | ||
| 8250_accent.c | ||
| 8250_acorn.c | ||
| 8250_aspeed_vuart.c | ||
| 8250_bcm2835aux.c | ||
| 8250_boca.c | ||
| 8250_core.c | ||
| 8250_dma.c | ||
| 8250_dw.c | ||
| 8250_dwlib.c | ||
| 8250_dwlib.h | ||
| 8250_early.c | ||
| 8250_em.c | ||
| 8250_exar_st16c554.c | ||
| 8250_exar.c | ||
| 8250_fintek.c | ||
| 8250_fourport.c | ||
| 8250_fsl.c | ||
| 8250_gsc.c | ||
| 8250_hp300.c | ||
| 8250_hub6.c | ||
| 8250_ingenic.c | ||
| 8250_ioc3.c | ||
| 8250_lpc18xx.c | ||
| 8250_lpss.c | ||
| 8250_men_mcb.c | ||
| 8250_mid.c | ||
| 8250_mtk.c | ||
| 8250_of.c | ||
| 8250_omap.c | ||
| 8250_pci.c | ||
| 8250_pnp.c | ||
| 8250_port.c | ||
| 8250_pxa.c | ||
| 8250_tegra.c | ||
| 8250_uniphier.c | ||
| 8250.h | ||
| Kconfig | ||
| Makefile | ||
| serial_cs.c | ||