linux-uconsole/drivers/tty/serial
Peter Hurley e3f5ff371c serial: 8250_dw: Fix deadlock in LCR workaround
commit 7fd6f640f2 upstream.

Trying to write console output from within the serial console driver
while the port->lock is held causes recursive deadlock:

  CPU 0
spin_lock_irqsave(&port->lock)
printk()
  console_unlock()
    call_console_drivers()
      serial8250_console_write()
        spin_lock_irqsave(&port->lock)
** DEADLOCK **

The 8250_dw i/o accessors try to write a console error message if the
LCR workaround was unsuccessful. When the port->lock is already held
(eg., when called from serial8250_set_termios()), this deadlocks.

Make the error message a FIXME until a general solution is devised.

Cc: Tim Kryger <tim.kryger@gmail.com>
Reported-by: Zhang Zhen <zhenzhang.zhang@huawei.com>
Signed-off-by: Peter Hurley <peter@hurleysoftware.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2015-04-29 10:33:57 +02:00
..
8250 serial: 8250_dw: Fix deadlock in LCR workaround 2015-04-29 10:33:57 +02:00
cpm_uart TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
jsm TTY: jsm, remove superfluous check 2013-03-18 16:17:20 -07:00
21285.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
68328serial.c Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gerg/m68knommu 2013-05-10 07:22:35 -07:00
altera_jtaguart.c tty: serial: altera_jtaguart: Simplify altera_jtaguart_init() 2013-02-05 11:13:51 -08:00
altera_uart.c tty: serial: altera_uart: Simplify altera_uart_init() 2013-02-05 11:13:50 -08:00
amba-pl010.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
amba-pl011.c serial: amba-pl011: use port lock to guard control register access 2014-01-25 08:27:12 -08:00
apbuart.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
apbuart.h
ar933x_uart.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
arc_uart.c serial: arc_uart: Fix module alias 2013-08-11 18:35:21 -07:00
atmel_serial.c tty/serial: at91: Handle shutdown more safely 2014-02-06 11:08:14 -08:00
bcm63xx_uart.c MIPS: BCM63XX: merge bcm63xx_clk.h into bcm63xx/clk.c 2013-05-08 01:19:04 +02:00
bfin_sport_uart.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
bfin_sport_uart.h tty: bfin-sport-uart: Rx interrupt is not called always with irq disabled. 2011-12-09 19:05:33 -08:00
bfin_uart.c TTY: serial/bfin_uart, unbreak build with KGDB enabled 2013-03-18 16:24:30 -07:00
clps711x.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
crisv10.c crisv10: use counts from tty_port 2013-03-18 16:26:33 -07:00
crisv10.h crisv10: use counts from tty_port 2013-03-18 16:26:33 -07:00
dz.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
dz.h
efm32-uart.c serial/efm32: parse location property 2013-01-21 13:56:46 -08:00
icom.c driver: tty: serial: remove cast for kzalloc return value 2013-03-18 17:09:37 -07:00
icom.h
ifx6x60.c tty: ifx6x60: Remove unused suspend/resume callbacks 2013-03-18 16:29:29 -07:00
ifx6x60.h serial:ifx6x60:Prevent data transfer when IFX6x60 port is shutdown 2012-11-01 08:50:01 -07:00
imx.c serial/imx: disable hardware flow control at startup 2013-06-03 10:08:28 -07:00
ioc3_serial.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
ioc4_serial.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
ip22zilog.c TTY: ip22zilog, fix tty_flip_buffer_push call 2013-01-16 07:36:47 -08:00
ip22zilog.h
Kconfig tty: serial: fix typo "SERIAL_S3C2412" 2013-03-12 08:53:23 -07:00
kgdb_nmi.c kgdb: remove #include <linux/serial_8250.h> from kgdb.h 2013-02-04 15:35:26 -08:00
kgdboc.c KGDB/KDB fixes and cleanups 2012-10-13 11:16:58 +09:00
lantiq.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
lpc32xx_hs.c serial: lpc32xx: Fix fallout from tty_port conversion 2013-01-18 16:05:15 -08:00
m32r_sio.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
m32r_sio.h TTY: serial, include pci.h in m32r_sio 2012-03-08 11:47:02 -08:00
m32r_sio_reg.h m32r: relocate drivers back out of 8250 dir 2012-02-08 15:04:32 -08:00
Makefile serial: rp2: New driver for Comtrol RocketPort 2 cards 2013-01-17 17:28:39 -08:00
max310x.c tty: max310x: Use dev_pm_ops 2013-03-18 16:29:29 -07:00
max3100.c serial: max3100: use spi_get_drvdata() and spi_set_drvdata() 2013-04-05 15:49:39 -07:00
mcf.c serial: mcf: missing uart_unregister_driver() on error in mcf_init() 2013-05-20 11:54:56 -07:00
mfd.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
mpc52xx_uart.c tty: serial: mpc5xxx: fix error handing in mpc52xx_uart_init() 2013-05-20 11:54:55 -07:00
mpsc.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
mrst_max3110.c tty: mrst_max3110: Use dev_pm_ops 2013-03-18 16:29:29 -07:00
mrst_max3110.h max3110: add sysrq support 2011-08-26 11:01:15 -07:00
msm_serial.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
msm_serial.h
msm_serial_hs.c TTY: serial/msm_serial_hs, remove unused tty 2013-03-18 16:24:30 -07:00
msm_smd_tty.c TTY: msm_smd_tty, clean up activate/shutdown 2013-03-18 16:19:44 -07:00
mux.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
mxs-auart.c serial/mxs-auart: increase time to wait for transmitter to become idle 2013-08-11 18:35:21 -07:00
netx-serial.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
nwpserial.c tty: nwpserial: Pass correct pointer to free_irq() 2013-05-20 11:54:55 -07:00
of_serial.c serial: of_serial: Handle auto-flow-control property 2013-03-25 16:36:48 -07:00
omap-serial.c SERIAL: OMAP: Remove the slave idle handling from the driver 2013-05-19 16:37:08 -06:00
pch_uart.c serial: pch_uart: fix tty-kref leak in dma-rx path 2013-10-05 07:13:10 -07:00
pmac_zilog.c TTY: pmac_zilog, check existence of ports in pmz_console_init() 2014-01-09 12:24:19 -08:00
pmac_zilog.h tty/serial/pmac_zilog: Fix suspend & resume 2011-12-16 11:10:01 +11:00
pnx8xxx_uart.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
pxa.c serial: pxa: fine-tune clk useage 2013-01-25 08:52:23 -08:00
rp2.c serial: rp2: New driver for Comtrol RocketPort 2 cards 2013-01-17 17:28:39 -08:00
sa1100.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
samsung.c serial: samsung: wait for transfer completion before clock disable 2015-01-16 06:59:02 -08:00
samsung.h tty: serial/samsung: fix modular build 2013-04-11 13:14:37 -07:00
sb1250-duart.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
sc26xx.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
sccnxp.c serial: sccnxp: Replace pdata.init/exit with regulator API 2013-04-15 11:04:07 -07:00
serial-tegra.c serial: tegra: fix tty-kref leak 2013-10-05 07:13:10 -07:00
serial_core.c serial: Fix divide-by-zero fault in uart_get_divisor() 2014-11-14 08:47:58 -08:00
serial_ks8695.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
serial_txx9.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
sh-sci.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
sh-sci.h serial: sh-sci: remove obsolete Kconfig macros 2013-03-25 14:06:45 -07:00
sirfsoc_uart.c tty/serial/sirf: fix MODULE_DEVICE_TABLE 2013-04-23 10:43:18 -07:00
sirfsoc_uart.h serial: sirf: only use lookup table to set baudrate when ioclk=150MHz 2013-01-17 17:18:55 -08:00
sn_console.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
suncore.c tty: sparc: rename drivers/tty/serial/suncore.h -> include/linux/sunserialcore.h 2012-02-10 10:44:35 -08:00
sunhv.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
sunsab.c sunsab: Fix detection of BREAK on sunsab serial console 2014-08-14 09:24:16 +08:00
sunsab.h
sunsu.c serial: sunsu: add missing platform_driver_unregister() when module exit 2013-05-04 17:39:48 -07:00
sunzilog.c TTY: serial, stop accessing potential NULLs 2013-03-18 17:09:37 -07:00
sunzilog.h
timbuart.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
timbuart.h
uartlite.c tty: serial: uartlite: Support uartlite on big and little endian systems 2013-02-13 08:38:45 -08:00
ucc_uart.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
vr41xx_siu.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
vt8500_serial.c serial: vt8500: add missing braces 2013-11-04 04:31:06 -08:00
xilinx_uartps.c Merge 3.9-rc5 into tty-next 2013-04-01 12:01:10 -07:00
zs.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
zs.h