From 8ebfe885c65ec82a0b1e955cf99ed62664e84414 Mon Sep 17 00:00:00 2001 From: Lance Roy Date: Thu, 4 Oct 2018 00:14:04 -0700 Subject: [PATCH] TTY: sn_console: Replace spin_is_locked() with spin_trylock() sn_sal_console_write() used spin_is_locked() + spin_lock() to get achieve the same thing as a spin_trylock(), so simplify it by using that instead. This is also a step towards possibly removing spin_is_locked(). Signed-off-by: Lance Roy Cc: Greg Kroah-Hartman Cc: Jiri Slaby Cc: Signed-off-by: Greg Kroah-Hartman --- drivers/tty/serial/sn_console.c | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/drivers/tty/serial/sn_console.c b/drivers/tty/serial/sn_console.c index 42b9aded4eb1..fe9170731c16 100644 --- a/drivers/tty/serial/sn_console.c +++ b/drivers/tty/serial/sn_console.c @@ -888,7 +888,7 @@ sn_sal_console_write(struct console *co, const char *s, unsigned count) /* somebody really wants this output, might be an * oops, kdb, panic, etc. make sure they get it. */ - if (spin_is_locked(&port->sc_port.lock)) { + if (!spin_trylock_irqsave(&port->sc_port.lock, flags)) { int lhead = port->sc_port.state->xmit.head; int ltail = port->sc_port.state->xmit.tail; int counter, got_lock = 0; @@ -905,13 +905,11 @@ sn_sal_console_write(struct console *co, const char *s, unsigned count) */ for (counter = 0; counter < 150; mdelay(125), counter++) { - if (!spin_is_locked(&port->sc_port.lock) - || stole_lock) { - if (!stole_lock) { - spin_lock_irqsave(&port->sc_port.lock, - flags); - got_lock = 1; - } + if (stole_lock) + break; + + if (spin_trylock_irqsave(&port->sc_port.lock, flags)) { + got_lock = 1; break; } else { /* still locked */ @@ -938,7 +936,6 @@ sn_sal_console_write(struct console *co, const char *s, unsigned count) puts_raw_fixed(port->sc_ops->sal_puts_raw, s, count); } else { stole_lock = 0; - spin_lock_irqsave(&port->sc_port.lock, flags); sn_transmit_chars(port, 1); spin_unlock_irqrestore(&port->sc_port.lock, flags);