tty: serial: 8250: omap: synchronize rx_running
authorJohn Ogness <john.ogness@linutronix.de>
Mon, 27 Apr 2015 11:52:33 +0000 (13:52 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 6 May 2015 20:27:01 +0000 (22:27 +0200)
commiteda0cd3546ab2c69796ea0bfdc04723c74372f1d
tree93f563e8d80b7049debeab9310290997533fb9a4
parent02ec6041a8dd17d9bd7dd12eb6280a6b112f83e5
tty: serial: 8250: omap: synchronize rx_running

The rx_running flag should show if DMA is currently active. However
there is a window between when the flag is set/cleared and when
the DMA is started/stopped. Because the flag is queried from both
hard and soft irq contexts, the driver can make incorrect
decisions and do things like start a DMA transfer using a buffer
that is already setup to be used for a DMA transfer.

This patch adds a spinlock to synchronize the rx_running flag and
close the above mentioned window.

Signed-off-by: John Ogness <john.ogness@linutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/8250/8250_omap.c