serial: 8250: Deduplicate rs485 active_timer assignment
authorLukas Wunner <lukas@wunner.de>
Fri, 28 Feb 2020 13:31:05 +0000 (14:31 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 7 Mar 2020 08:52:02 +0000 (09:52 +0100)
When rs485 transmission over an 8250 port stops, __stop_tx() assigns
active_timer = NULL before calling __stop_tx_rs485().

That function in turn either assigns active_timer = stop_tx_timer and
rearms the timer (in case a delay_rts_after_send needs to be observed)
or directly calls __do_stop_tx_rs485().

Move the assignment active_timer = NULL to __stop_tx_rs485() into the
branch which directly calls __do_stop_tx_rs485(), thereby avoiding a
duplicate assignment and simplifying the code.

Signed-off-by: Lukas Wunner <lukas@wunner.de>
Cc: Matwey V. Kornilov <matwey@sai.msu.ru>
Link: https://lore.kernel.org/r/bca638405550eaf92f0c6060b553b687f35885e0.1582895077.git.lukas@wunner.de
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/8250/8250_port.c

index d281aea061d6d380e9fcfb040b7a117bd829dc01..1a71625a0d432c14ee6417d0a7a2bd6f22a81ee9 100644 (file)
@@ -1498,6 +1498,7 @@ static void __stop_tx_rs485(struct uart_8250_port *p)
                                   p->port.rs485.delay_rts_after_send);
        } else {
                __do_stop_tx_rs485(p);
+               em485->active_timer = NULL;
        }
 }
 
@@ -1522,8 +1523,6 @@ static inline void __stop_tx(struct uart_8250_port *p)
                if ((lsr & BOTH_EMPTY) != BOTH_EMPTY)
                        return;
 
-               em485->active_timer = NULL;
-
                __stop_tx_rs485(p);
        }
        __do_stop_tx(p);