8250: fix possible deadlock between serial8250_handle_port() and serial8250_interrupt()
authorJiri Kosina <jkosina@suse.cz>
Mon, 23 Apr 2007 21:41:21 +0000 (14:41 -0700)
committerLinus Torvalds <torvalds@woody.linux-foundation.org>
Tue, 24 Apr 2007 15:23:09 +0000 (08:23 -0700)
commit4bf3631cdb012591667ab927fcd7719d92837833
tree25976c75042f3aa557a7bc8ece781ea4901acc62
parentc5408b88ecb8b7127334a34c55d4e0174434f4ec
8250: fix possible deadlock between serial8250_handle_port() and serial8250_interrupt()

Commit 40b36daa introduced possibility that serial8250_backup_timeout() ->
serial8250_handle_port() locks port.lock without disabling irqs, thus
allowing deadlock against interrupt handler (port.lock is acquired in
serial8250_interrupt()).

Spotted by lockdep.

Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Cc: Dave Jones <davej@codemonkey.org.uk>
Cc: Russell King <rmk@arm.linux.org.uk>
Cc: Alex Williamson <alex.williamson@hp.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
drivers/serial/8250.c