serial: core: don't check port twice in a row

There is no need to check port for NULL in uart_port_deref() since we call it
only when port is defined.

There are few places that violate this. Fix them here as well.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Andy Shevchenko 2016-11-24 14:18:55 +02:00 committed by Greg Kroah-Hartman
parent b810645473
commit ef510bea5f

View File

@ -73,7 +73,7 @@ static inline struct uart_port *uart_port_ref(struct uart_state *state)
static inline void uart_port_deref(struct uart_port *uport) static inline void uart_port_deref(struct uart_port *uport)
{ {
if (uport && atomic_dec_and_test(&uport->state->refcount)) if (atomic_dec_and_test(&uport->state->refcount))
wake_up(&uport->state->remove_wait); wake_up(&uport->state->remove_wait);
} }
@ -88,9 +88,10 @@ static inline void uart_port_deref(struct uart_port *uport)
#define uart_port_unlock(uport, flags) \ #define uart_port_unlock(uport, flags) \
({ \ ({ \
struct uart_port *__uport = uport; \ struct uart_port *__uport = uport; \
if (__uport) \ if (__uport) { \
spin_unlock_irqrestore(&__uport->lock, flags); \ spin_unlock_irqrestore(&__uport->lock, flags); \
uart_port_deref(__uport); \ uart_port_deref(__uport); \
} \
}) })
static inline struct uart_port *uart_port_check(struct uart_state *state) static inline struct uart_port *uart_port_check(struct uart_state *state)
@ -1515,7 +1516,10 @@ static void uart_wait_until_sent(struct tty_struct *tty, int timeout)
unsigned long char_time, expire; unsigned long char_time, expire;
port = uart_port_ref(state); port = uart_port_ref(state);
if (!port || port->type == PORT_UNKNOWN || port->fifosize == 0) { if (!port)
return;
if (port->type == PORT_UNKNOWN || port->fifosize == 0) {
uart_port_deref(port); uart_port_deref(port);
return; return;
} }
@ -2365,10 +2369,11 @@ static int uart_poll_get_char(struct tty_driver *driver, int line)
if (state) { if (state) {
port = uart_port_ref(state); port = uart_port_ref(state);
if (port) if (port) {
ret = port->ops->poll_get_char(port); ret = port->ops->poll_get_char(port);
uart_port_deref(port); uart_port_deref(port);
} }
}
return ret; return ret;
} }