linux/drivers/tty
Ian Jamison 514ab34dba serial: imx: Prevent TX buffer PIO write when a DMA has been started
Function imx_transmit_buffer starts a TX DMA if DMA is enabled, since
commit 91a1a909f9 ("serial: imx: Support sw flow control in DMA mode").
It also carries on and attempts to write the same TX buffer using PIO.
This results in TX data corruption and double-incrementing xmit->tail
with the knock-on effect of tail passing head and a page of garbage
being sent out.

This seems to be triggered mostly when using RS485 half duplex on SMP
systems, but is probably not limited to just those.

Tested locally on an i.MX6Q with an RS485 half duplex transceiver on
UART3, and also by Clemens Gruber.

Tested-by: Clemens Gruber <clemens.gruber@pqgruber.com>
Signed-off-by: Ian Jamison <ian.dev@arkver.com>
Reviewed-by: Fabio Estevam <fabio.estevam@nxp.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2017-07-17 14:14:24 +02:00
..
hvc driver core patches for 4.13-rc1 2017-07-03 20:27:48 -07:00
ipwireless networking: introduce and use skb_put_data() 2017-06-16 11:48:37 -04:00
serdev driver core patches for 4.13-rc1 2017-07-03 20:27:48 -07:00
serial serial: imx: Prevent TX buffer PIO write when a DMA has been started 2017-07-17 14:14:24 +02:00
vt vt: fix \e[2m using the wrong placeholder color on graphical consoles 2017-06-09 11:20:08 +02:00
amiserial.c tty: amiserial: drop broken alt-speed support 2017-06-13 11:49:58 +02:00
bfin_jtag_comm.c
cyclades.c tty: cyclades: drop broken alt-speed support 2017-06-13 11:49:58 +02:00
ehv_bytechan.c tty: ehv_bytechan: clean up init error handling 2017-05-18 16:43:55 +02:00
goldfish.c tty: goldfish: Fix a parameter of a call to free_irq 2017-01-12 11:51:25 +01:00
isicom.c
Kconfig devpts: Make each mount of devpts an independent filesystem. 2016-06-05 10:36:01 -07:00
Makefile tty: handle the case where we cannot restore a line discipline 2017-06-03 18:43:46 +09:00
metag_da.c timers, drivers/tty/metag_da: Initialize the poll timer as pinned 2016-07-07 10:25:14 +02:00
mips_ejtag_fdc.c timers, drivers/tty/mips_ejtag: Initialize the poll timer as pinned 2016-07-07 10:34:59 +02:00
moxa.c Annotate hardware config module parameters in drivers/tty/ 2017-04-20 12:02:32 +01:00
moxa.h
mxser.c Annotate hardware config module parameters in drivers/tty/ 2017-04-20 12:02:32 +01:00
mxser.h
n_gsm.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2017-07-05 12:31:59 -07:00
n_hdlc.c format-security: move static strings to const 2017-05-08 17:15:14 -07:00
n_null.c tty: handle the case where we cannot restore a line discipline 2017-06-03 18:43:46 +09:00
n_r3964.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
n_tracerouter.c
n_tracesink.c
n_tracesink.h
n_tty.c Fix OpenSSH pty regression on close 2016-05-01 13:22:54 -07:00
nozomi.c tty: nozomi: avoid sprintf buffer overflow 2016-11-29 20:20:07 +01:00
pty.c tty: add TIOCGPTPEER ioctl 2017-06-09 12:27:54 +02:00
rocket_int.h
rocket.c tty: rocket: drop broken alt-speed support 2017-06-13 11:49:58 +02:00
rocket.h
synclink_gt.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2017-07-05 12:31:59 -07:00
synclink.c networking: introduce and use skb_put_data() 2017-06-16 11:48:37 -04:00
synclinkmp.c networking: introduce and use skb_put_data() 2017-06-16 11:48:37 -04:00
sysrq.c oom: improve oom disable handling 2017-05-03 15:52:10 -07:00
tty_audit.c
tty_baudrate.c tty: move baudrate handling code to a file of its own 2017-04-18 18:01:52 +02:00
tty_buffer.c tty_port: Add port client functions 2017-02-03 10:17:02 +01:00
tty_io.c tty: add function to convert device name to number 2017-06-27 09:08:47 +02:00
tty_ioctl.c tty: move baudrate handling code to a file of its own 2017-04-18 18:01:52 +02:00
tty_jobctrl.c tty: split job control support into a file of its own 2017-04-18 18:01:52 +02:00
tty_ldisc.c TTY/Serial patches for 4.13-rc1 2017-07-03 20:04:16 -07:00
tty_ldsem.c sched/headers: Prepare to move the get_task_struct()/put_task_struct() and related APIs from <linux/sched.h> to <linux/sched/task.h> 2017-03-02 08:42:40 +01:00
tty_mutex.c
tty_port.c Revert "tty: fix port buffer locking" 2017-06-04 10:23:25 +02:00