diff options
author | Johannes Thumshirn <jthumshirn@suse.de> | 2015-08-06 09:16:37 +0200 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2015-08-14 17:14:13 -0700 |
commit | 8117e347406278fd399b077add4e638cd017ae2d (patch) | |
tree | c525404c5329e6d12f82dd5233687708b0a9cde2 /drivers/bus | |
parent | 1d7002777a8fe8188caaa98d4a8eb4ed298fcdae (diff) | |
download | blackbird-op-linux-8117e347406278fd399b077add4e638cd017ae2d.tar.gz blackbird-op-linux-8117e347406278fd399b077add4e638cd017ae2d.zip |
tty: serial: men_z135_uart.c: Fix race between IRQ and set_termios()
Fix panic caused by a race between men_z135_intr() and men_z135_set_termios().
men_z135_intr() and men_z135_set_termios() both hold the struct uart_port::lock
spinlock, but men_z135_intr() does a spin_lock_irqsave() and
men_z135_set_termios() does a normal spin_lock(), which can lead to a deadlock
when an interrupt is called while the lock is being helt by
men_z135_set_termios().
This was discovered using a insmod, hardware looppback send/receive, rmmod
stress test.
Signed-off-by: Johannes Thumshirn <jthumshirn@suse.de>
Reviewed-by: Peter Hurley <peter@hurleysoftware.com>
Cc: Andreas Werner <andreas.werner@men.de>
Cc: stable@vger.kernel.org # v4.0+
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/bus')
0 files changed, 0 insertions, 0 deletions