OpenCloudOS-Kernel/drivers/tty/serial
Thomas Pfaff 7deb39ed8d serial_core: fix uart PORT_UNKNOWN handling
While porting a RS485 driver from 2.6.29 to 3.14, i noticed that the serial tty
driver could break it by using uart ports that it does not own :

1. uart_change_pm ist called during uart_open and calls the uart pm function
   without checking for PORT_UNKNOWN.
   The fix is to move uart_change_pm from uart_open to uart_port_startup.
2. The return code from the uart request_port call in uart_set_info is not
   handled properly, leading to the situation that the serial driver also
   thinks it owns the uart ports.
   This can triggered by doing following actions :

   setserial /dev/ttyS0 uart none    # release the uart ports
   modprobe lirc-serial              # or any other device that uses the uart
   setserial /dev/ttyS0 uart 16550   # gives no error and the uart tty driver
                                     # can use the ports as well

Signed-off-by: Thomas Pfaff <tpfaff@pcs.com>
Reviewed-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-04-24 15:38:22 -07:00
..
8250 serial: 8250: Fix thread unsafe __dma_tx_complete function 2014-04-24 15:18:02 -07:00
cpm_uart tty: delete non-required instances of include <linux/init.h> 2014-01-07 17:05:21 -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
Kconfig serial: timberdale: Depend on X86_32 2014-04-16 14:17:44 -07:00
Makefile serial: Remove old SC26XX driver 2013-12-19 12:34:30 -08:00
altera_jtaguart.c ARM: SoC DT updates for 3.12 2013-09-06 13:26:27 -07:00
altera_uart.c ARM: SoC DT updates for 3.12 2013-09-06 13:26:27 -07:00
amba-pl010.c serial: pl010: Convert to modern PM ops 2013-12-08 17:09:07 -08:00
amba-pl011.c serial: amba-pl011: fix regression, causing an Oops on rmmod 2014-04-16 14:31:13 -07:00
apbuart.c tty: serial: apbuart: drop uart_port->lock before calling tty_flip_buffer_push() 2013-08-27 16:17:33 -07:00
apbuart.h
ar933x_uart.c tty: ar933x_uart: add device tree support and binding documentation 2013-08-30 14:11:27 -07:00
arc_uart.c serial: arc_uart: Remove casting the return value which is a void pointer 2013-09-26 14:29:58 -07:00
atmel_serial.c ARM: SoC: cleanups for 3.15 2014-04-05 13:51:19 -07:00
bcm63xx_uart.c tty: serial: bcm63xx_uart: add support for DT probing 2014-02-28 16:27:18 -08:00
bfin_sport_uart.c serial: bfin_sport_uart: Remove casting the return value which is a void pointer 2013-09-26 14:29:58 -07:00
bfin_sport_uart.h
bfin_uart.c tty: Remove unnecessary semicolons 2013-10-16 13:08:16 -07:00
clps711x.c Revert "serial: clps711x: Give a chance to perform useful tasks during wait loop" 2014-04-16 14:17:44 -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 TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
dz.h
efm32-uart.c serial: efm32: use $vendor,$device scheme for compatible string 2014-04-16 14:17:43 -07:00
fsl_lpuart.c serial: fsl_lpuart: add DMA support 2014-02-18 12:50:26 -08:00
icom.c serial: icom: dereference after free in load_code() 2013-12-08 17:16:05 -08: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 serial: imx: Remove init() and exit() platform callbacks 2014-02-28 16:36:45 -08:00
ioc3_serial.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
ioc4_serial.c serial: ioc4_serial: Staticize ioc4_serial_attach_one() 2013-08-12 11:35:32 -07:00
ip22zilog.c tty: Remove unnecessary semicolons 2013-10-16 13:08:16 -07:00
ip22zilog.h
kgdb_nmi.c tty: delete non-required instances of include <linux/init.h> 2014-01-07 17:05:21 -08:00
kgdboc.c treewide: Convert retrun typos to return 2013-09-04 12:26:36 +02:00
lantiq.c serial: MIPS: lantiq: fix clock error check 2013-08-12 11:37:48 -07:00
lpc32xx_hs.c tty: serial: lpc32xx_hs: drop uart_port->lock before calling tty_flip_buffer_push() 2013-08-27 16:17:34 -07:00
m32r_sio.c tty: serial: m32r_sio: drop uart_port->lock before calling tty_flip_buffer_push() 2013-08-27 16:17:34 -07:00
m32r_sio.h
m32r_sio_reg.h
max310x.c serial: max310x: Add missing #include <linux/uaccess.h> 2014-03-17 16:13:23 -07:00
max3100.c serial: use dev_get_platdata() 2013-07-31 17:56:15 -07:00
mcf.c tty: serial: mcf: drop uart_port->lock before calling tty_flip_buffer_push() 2013-08-27 16:17:34 -07:00
mfd.c serial: mfd: Staticize local symbols 2013-10-29 16:34:11 -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: mpsc: Remove casting the return value which is a void pointer 2013-09-26 14:29:58 -07:00
mrst_max3110.c mrst_max3110: fix unbalanced IRQ issue during resume 2013-10-29 16:26:54 -07:00
mrst_max3110.h
msm_serial.c msm_serial: Add support for poll_{get,put}_char() 2014-02-12 11:34:23 -08:00
msm_serial.h msm_serial: Add support for poll_{get,put}_char() 2014-02-12 11:34:23 -08:00
msm_serial_hs.c serial: use dev_get_platdata() 2013-07-31 17:56:15 -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 tty: serial: mxs-auart: Check the return value from clk_prepare_enable() 2013-12-08 17:14:58 -08:00
netx-serial.c tty: serial: netx: drop uart_port->lock before calling tty_flip_buffer_push() 2013-08-27 16:17:34 -07:00
nwpserial.c tty: serial: nwpserial: drop uart_port->lock before calling tty_flip_buffer_push() 2013-08-27 16:17:35 -07:00
of_serial.c tty: delete non-required instances of include <linux/init.h> 2014-01-07 17:05:21 -08:00
omap-serial.c serial: omap: Fix missing pm_runtime_resume handling by simplifying code 2014-04-16 14:19:13 -07:00
pch_uart.c serial: pch_uart: Fix build warning when CONFIG_DEBUG_FS=n 2014-02-13 09:17:31 -08:00
pmac_zilog.c TTY: pmac_zilog, check existence of ports in pmz_console_init() 2013-11-25 08:54:25 -08:00
pmac_zilog.h
pnx8xxx_uart.c tty: serial: pnx8xxx: drop uart_port->lock before calling tty_flip_buffer_push() 2013-08-27 16:17:35 -07:00
pxa.c serial: pxa: Staticize local symbols 2013-08-12 11:10:16 -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: Change barrier() to cpu_relax() in console output 2014-04-24 15:38:22 -07:00
samsung.h serial: samsung: Remove casting the return value which is a void pointer 2013-09-26 14:29:59 -07:00
sb1250-duart.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
sccnxp.c serial: sccnxp: missing uart_unregister_driver() on error in sccnxp_probe() 2013-09-26 15:44:45 -07:00
serial-tegra.c serial: tegra: convert to standard DMA DT bindings 2013-12-11 16:44:35 -07:00
serial_core.c serial_core: fix uart PORT_UNKNOWN handling 2014-04-24 15:38:22 -07:00
serial_ks8695.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
serial_txx9.c serial: txx9: remove unnecessary pci_set_drvdata() 2013-09-26 15:41:38 -07:00
sh-sci.c TTY/Serial driver update for 3.15-rc1 2014-04-01 16:55:57 -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: move to use generic dma dt-binding to get dma channels 2014-02-13 10:36:25 -08:00
sirfsoc_uart.h serial: sirf: move to use generic dma dt-binding to get dma channels 2014-02-13 10:36:25 -08:00
sn_console.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
st-asc.c serial: st-asc: Fix SysRq char handling 2014-04-16 14:17:44 -07:00
suncore.c
sunhv.c sparc: serial: Clean up the locking for -rt 2014-03-06 16:32:25 -05:00
sunsab.c sparc: serial: Clean up the locking for -rt 2014-03-06 16:32:25 -05:00
sunsab.h
sunsu.c sparc: serial: Clean up the locking for -rt 2014-03-06 16:32:25 -05:00
sunzilog.c sparc: serial: Clean up the locking for -rt 2014-03-06 16:32:25 -05:00
sunzilog.h
tilegx.c tilegx: Add tty serial support for TILE-Gx on-chip UART 2013-09-03 14:50:40 -04:00
timbuart.c serial: timbuart: Staticize local symbols 2013-08-12 11:35:31 -07: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 DeviceTree updates for 3.13. This is a bit larger pull request than 2013-11-12 16:52:17 +09:00
vr41xx_siu.c serial: use dev_get_platdata() 2013-07-31 17:56:15 -07:00
vt8500_serial.c serial: vt8500: add missing braces 2013-10-16 13:22:16 -07:00
xilinx_uartps.c tty: xuartps: Properly guard sysrq specific code 2013-12-17 16:02:25 -08:00
zs.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
zs.h