From 67d2bc58afdd5168dce54ae06f5f30038c59f498 Mon Sep 17 00:00:00 2001 From: Jan Yenya Kasprzak Date: Mon, 23 Apr 2007 14:41:02 -0700 Subject: Char: mxser_new, fix recursive locking Signed-off-by: Jan "Yenya" Kasprzak Acked-by: Jiri Slaby Acked-by: Alan Cox Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- drivers/char/mxser_new.c | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'drivers/char') diff --git a/drivers/char/mxser_new.c b/drivers/char/mxser_new.c index 9af07e4999d..59e0aac19c2 100644 --- a/drivers/char/mxser_new.c +++ b/drivers/char/mxser_new.c @@ -2230,7 +2230,14 @@ end_intr: port->mon_data.rxcnt += cnt; port->mon_data.up_rxcnt += cnt; + /* + * We are called from an interrupt context with &port->slock + * being held. Drop it temporarily in order to prevent + * recursive locking. + */ + spin_unlock(&port->slock); tty_flip_buffer_push(tty); + spin_lock(&port->slock); } static void mxser_transmit_chars(struct mxser_port *port) -- cgit v1.2.2