mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-14 22:44:27 +08:00
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:
parent
b810645473
commit
ef510bea5f
@ -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)
|
||||
{
|
||||
if (uport && atomic_dec_and_test(&uport->state->refcount))
|
||||
if (atomic_dec_and_test(&uport->state->refcount))
|
||||
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) \
|
||||
({ \
|
||||
struct uart_port *__uport = uport; \
|
||||
if (__uport) \
|
||||
if (__uport) { \
|
||||
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)
|
||||
@ -1515,7 +1516,10 @@ static void uart_wait_until_sent(struct tty_struct *tty, int timeout)
|
||||
unsigned long char_time, expire;
|
||||
|
||||
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);
|
||||
return;
|
||||
}
|
||||
@ -2365,9 +2369,10 @@ static int uart_poll_get_char(struct tty_driver *driver, int line)
|
||||
|
||||
if (state) {
|
||||
port = uart_port_ref(state);
|
||||
if (port)
|
||||
if (port) {
|
||||
ret = port->ops->poll_get_char(port);
|
||||
uart_port_deref(port);
|
||||
uart_port_deref(port);
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user