linux_dsm_epyc7002/drivers/tty/serial
Peter Hurley ddc7b758a6 tty: Move tty->closing from port lock critical section
tty->closing informs the line discipline that the hardware will
be shutting down imminently, and to disable further input other
than soft flow control (but to still allow additional output).

However, the tty lock is the necessary lock for preventing
concurrent changes to tty->closing. As shown by the call-tree
audit [1] of functions that modify tty->closing, the tty lock
is already held for those functions.

[1]
Call-tree audit of functions that modify tty->closing
* does not include call tree to tty_port_close(), tty_port_close_start(),
  or tty_port_close_end() which is already documented in
  'tty: Document locking for tty_port_close{,start,end}' that shows
  callers to those 3 functions hold the tty lock

tty_release()
  tty->ops->close() --+
                      |
__tty_hangup()        |
  tty->ops->close() --+
                      |
        mp_close():drivers/staging/sb105x/sb_pci_mp.c
        dngc_tty_close():drivers/staging/dgnc/dgnc_tty.c
        dgap_tty_close():drivers/staging/dgap/dgap_tty.c
        dgrp_tty_close():drivers/staging/dgrp/dgrp_tty.c
        rp_close():drivers/tty/rocket.c
        hvsi_close():drivers/tty/hvc/hvsi.c
        rs_close():drivers/tty/serial/68328serial.c
        rs_close():drivers/tty/serial/crisv10.c
        uart_close():drivers/tty/serial/serial_core.c
        isdn_tty_close():drivers/isdn/i4l/isdn_tty.c
        tty3215_close():drivers/s390/char/con3215.c

tty_open()
  tty_ldisc_setup() ----+
                        |
__tty_hangup()          |
  tty_ldisc_hangup() ---+
                        |
tty_set_ldisc() --------+
  tty_ldisc_restore() --+
                        |
                        +- tty_ldisc_open()
                             ld->ops->open() --+
                                               |
                                               +- n_tty_open()

Signed-off-by: Peter Hurley <peter@hurleysoftware.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-07-10 16:06:48 -07:00
..
8250 serial: 8250_dw: add ability to handle the peripheral clock 2014-07-10 15:27:37 -07:00
cpm_uart serial: treewide: Remove empty implementations of enable_ms() 2014-07-09 17:29:38 -07:00
jsm serial: treewide: Remove empty implementations of enable_ms() 2014-07-09 17:29:38 -07:00
21285.c serial: treewide: Remove empty implementations of enable_ms() 2014-07-09 17:29:38 -07: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 serial: treewide: Remove empty implementations of enable_ms() 2014-07-09 17:29:38 -07:00
altera_uart.c serial: treewide: Remove empty implementations of enable_ms() 2014-07-09 17:29:38 -07:00
amba-pl010.c serial: amba-pl010: Use devres APIs 2014-07-09 17:13:54 -07:00
amba-pl011.c serial: amba-pl011: Remove redundant label 2014-07-09 17:13:54 -07:00
apbuart.c serial: treewide: Remove empty implementations of enable_ms() 2014-07-09 17:29:38 -07:00
apbuart.h
ar933x_uart.c serial: treewide: Remove empty implementations of enable_ms() 2014-07-09 17:29:38 -07:00
arc_uart.c serial/arc: Enable DT based earlycon 2014-07-10 15:45:30 -07:00
atmel_serial.c serial: Fix IGNBRK handling 2014-06-19 13:04:52 -07:00
bcm63xx_uart.c serial: Fix IGNBRK handling 2014-06-19 13:04:52 -07:00
bfin_sport_uart.c serial: treewide: Remove empty implementations of enable_ms() 2014-07-09 17:29:38 -07:00
bfin_sport_uart.h
bfin_uart.c serial: treewide: Remove empty implementations of enable_ms() 2014-07-09 17:29:38 -07:00
clps711x.c serial: treewide: Remove empty implementations of enable_ms() 2014-07-09 17:29:38 -07:00
crisv10.c tty: serial: crisv10: Drop remaining code for CRISv10 CPU simulator 2014-02-15 12:16:21 -08:00
crisv10.h crisv10: use counts from tty_port 2013-03-18 16:26:33 -07:00
dz.c serial: treewide: Remove empty implementations of enable_ms() 2014-07-09 17:29:38 -07:00
dz.h
earlycon-arm-semihost.c tty/serial: add arm/arm64 semihosting earlycon 2014-04-24 16:32:27 -07:00
earlycon.c tty/serial: fix 8250 early console option passing to regular console 2014-06-19 13:07:26 -07:00
efm32-uart.c serial: treewide: Remove empty implementations of enable_ms() 2014-07-09 17:29:38 -07:00
fsl_lpuart.c serial: fsl_lpuart: calculate DMA burst 2014-07-10 16:03:59 -07:00
icom.c serial: treewide: Remove empty implementations of enable_ms() 2014-07-09 17:29:38 -07:00
icom.h
ifx6x60.c serial: ifx6x60: Remove casting the return value which is a void pointer 2013-09-26 14:29:58 -07:00
ifx6x60.h serial:ifx6x60:Prevent data transfer when IFX6x60 port is shutdown 2012-11-01 08:50:01 -07:00
imx.c Revert "serial: imx: remove the DMA wait queue" 2014-05-29 19:30:54 -07:00
ioc3_serial.c serial: treewide: Remove empty implementations of enable_ms() 2014-07-09 17:29:38 -07:00
ioc4_serial.c serial: treewide: Remove empty implementations of enable_ms() 2014-07-09 17:29:38 -07:00
ip22zilog.c serial: Fix IGNBRK handling 2014-06-19 13:04:52 -07:00
ip22zilog.h
Kconfig serial: lpc32xx uart module can't do console 2014-07-10 15:48:56 -07:00
kgdb_nmi.c serial: kgdb_nmi: Improve console integration with KDB I/O 2014-05-29 11:28:05 -07:00
kgdboc.c treewide: Convert retrun typos to return 2013-09-04 12:26:36 +02:00
lantiq.c serial: treewide: Remove empty implementations of enable_ms() 2014-07-09 17:29:38 -07:00
lpc32xx_hs.c serial: treewide: Remove empty implementations of enable_ms() 2014-07-09 17:29:38 -07:00
m32r_sio_reg.h
m32r_sio.c serial: Fix IGNBRK handling 2014-06-19 13:04:52 -07:00
m32r_sio.h
Makefile tty/serial: Add GPIOLIB helpers for controlling modem lines 2014-05-28 12:49:14 -07:00
max310x.c serial: treewide: Remove empty implementations of enable_ms() 2014-07-09 17:29:38 -07:00
max3100.c serial: use dev_get_platdata() 2013-07-31 17:56:15 -07:00
mcf.c serial: treewide: Remove empty implementations of enable_ms() 2014-07-09 17:29:38 -07:00
men_z135_uart.c tty: serial: men_z135_uart: Wakeup UART after transmitting 2014-07-09 17:35:42 -07:00
mfd.c serial: Fix IGNBRK handling 2014-06-19 13:04:52 -07:00
mpc52xx_uart.c serial: mpc512x: setup the PSC FIFO clock as well 2014-01-12 18:53:05 +01:00
mpsc.c serial: treewide: Remove empty implementations of enable_ms() 2014-07-09 17:29:38 -07:00
mrst_max3110.c serial: treewide: Remove empty implementations of enable_ms() 2014-07-09 17:29:38 -07:00
mrst_max3110.h
msm_serial_hs.c serial: use dev_get_platdata() 2013-07-31 17:56:15 -07:00
msm_serial.c tty: serial: msm_serial.c: Cleaning up uninitialized variables 2014-07-09 17:38:21 -07:00
msm_serial.h tty: serial: msm: Remove direct access to GSBI 2014-05-29 11:06:20 -05:00
msm_smd_tty.c TTY: msm_smd_tty, clean up activate/shutdown 2013-03-18 16:19:44 -07:00
mux.c serial: treewide: Remove empty implementations of enable_ms() 2014-07-09 17:29:38 -07:00
mxs-auart.c serial: treewide: Remove empty implementations of enable_ms() 2014-07-09 17:29:38 -07:00
netx-serial.c serial: Fix IGNBRK handling 2014-06-19 13:04:52 -07:00
nwpserial.c serial: treewide: Remove empty implementations of enable_ms() 2014-07-09 17:29:38 -07:00
of_serial.c printk/of_serial: fix serial console cessation part way through boot. 2014-05-28 13:07:27 -07:00
omap-serial.c tty: serial: omap: fix Sparse warnings 2014-04-24 16:19:02 -07:00
pch_uart.c serial_core: Commonalize crlf when working w/ a non open console port 2014-04-24 16:13:01 -07:00
pmac_zilog.c serial: Fix IGNBRK handling 2014-06-19 13:04:52 -07:00
pmac_zilog.h
pnx8xxx_uart.c serial: Fix IGNBRK handling 2014-06-19 13:04:52 -07:00
pxa.c serial: pxa: fix build with !SERIAL_PXA_CONSOLE 2014-07-10 15:48:41 -07:00
rp2.c tty: remove DEFINE_PCI_DEVICE_TABLE macro 2013-12-08 17:09:07 -08:00
sa1100.c serial: sa1100: delete .set_wake callback 2013-10-16 13:16:18 -07:00
samsung.c serial: samsung: Use %pa to print 'resource_size_t' type 2014-07-10 15:27:37 -07:00
samsung.h serial: samsung: Neaten dbg uses 2014-05-28 12:27:22 -07:00
sb1250-duart.c serial: Fix IGNBRK handling 2014-06-19 13:04:52 -07:00
sc16is7xx.c serial: treewide: Remove empty implementations of enable_ms() 2014-07-09 17:29:38 -07:00
sccnxp.c serial: treewide: Remove empty implementations of enable_ms() 2014-07-09 17:29:38 -07:00
serial_core.c tty: Move tty->closing from port lock critical section 2014-07-10 16:06:48 -07:00
serial_ks8695.c serial: Fix IGNBRK handling 2014-06-19 13:04:52 -07:00
serial_mctrl_gpio.c tty/serial: Add GPIOLIB helpers for controlling modem lines 2014-05-28 12:49:14 -07:00
serial_mctrl_gpio.h tty/serial: Add GPIOLIB helpers for controlling modem lines 2014-05-28 12:49:14 -07:00
serial_txx9.c serial: treewide: Remove empty implementations of enable_ms() 2014-07-09 17:29:38 -07:00
serial-tegra.c serial: tegra: ack the rx dma desc after transfer terminated 2014-07-10 15:53:20 -07:00
sh-sci.c serial: treewide: Remove empty implementations of enable_ms() 2014-07-09 17:29:38 -07:00
sh-sci.h serial: sh-sci: Move overrun_bit and error_mask fields out of pdata 2013-12-24 11:17:48 +09:00
sirfsoc_uart.c serial: sirf: transfer more bytes once to decrease interrupts 2014-07-09 17:37:00 -07:00
sirfsoc_uart.h serial: sirf: transfer more bytes once to decrease interrupts 2014-07-09 17:37:00 -07:00
sn_console.c serial: treewide: Remove empty implementations of enable_ms() 2014-07-09 17:29:38 -07:00
st-asc.c serial: treewide: Remove empty implementations of enable_ms() 2014-07-09 17:29:38 -07:00
suncore.c
sunhv.c serial: treewide: Remove empty implementations of enable_ms() 2014-07-09 17:29:38 -07:00
sunsab.c serial: treewide: Remove empty implementations of enable_ms() 2014-07-09 17:29:38 -07:00
sunsab.h
sunsu.c serial: Fix IGNBRK handling 2014-06-19 13:04:52 -07:00
sunzilog.c serial: Fix IGNBRK handling 2014-06-19 13:04:52 -07:00
sunzilog.h
tilegx.c serial: treewide: Remove empty implementations of enable_ms() 2014-07-09 17:29:38 -07:00
timbuart.c serial: treewide: Remove empty implementations of enable_ms() 2014-07-09 17:29:38 -07:00
timbuart.h
uartlite.c serial: treewide: Remove empty implementations of enable_ms() 2014-07-09 17:29:38 -07:00
ucc_uart.c serial: treewide: Remove empty implementations of enable_ms() 2014-07-09 17:29:38 -07:00
vr41xx_siu.c serial: Fix IGNBRK handling 2014-06-19 13:04:52 -07:00
vt8500_serial.c serial: vt8500: add missing braces 2013-10-16 13:22:16 -07:00
xilinx_uartps.c serial: treewide: Remove empty implementations of enable_ms() 2014-07-09 17:29:38 -07:00
zs.c serial: Fix IGNBRK handling 2014-06-19 13:04:52 -07:00
zs.h