]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
Revert "serial: core: only stop transmit when HW fifo is empty"
authorDoug Brown <doug@schmorgal.com>
Thu, 6 Jun 2024 19:56:31 +0000 (12:56 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 5 Jul 2024 07:33:59 +0000 (09:33 +0200)
commit c5603e2a621dac10c5e21cc430848ebcfa6c7e01 upstream.

This reverts commit 7bfb915a597a301abb892f620fe5c283a9fdbd77.

This commit broke pxa and omap-serial, because it inhibited them from
calling stop_tx() if their TX FIFOs weren't completely empty. This
resulted in these two drivers hanging during transmits because the TX
interrupt would stay enabled, and a new TX interrupt would never fire.

Cc: stable@vger.kernel.org
Fixes: 7bfb915a597a ("serial: core: only stop transmit when HW fifo is empty")
Signed-off-by: Doug Brown <doug@schmorgal.com>
Link: https://lore.kernel.org/r/20240606195632.173255-2-doug@schmorgal.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
include/linux/serial_core.h

index 5da5eb719f6142d45987b2a48374644e2523f5df..5a826b308e3ae8bae53aa2435a543cd47a3e2260 100644 (file)
@@ -787,8 +787,7 @@ enum UART_TX_FLAGS {
        if (pending < WAKEUP_CHARS) {                                         \
                uart_write_wakeup(__port);                                    \
                                                                              \
-               if (!((flags) & UART_TX_NOSTOP) && pending == 0 &&            \
-                   __port->ops->tx_empty(__port))                            \
+               if (!((flags) & UART_TX_NOSTOP) && pending == 0)              \
                        __port->ops->stop_tx(__port);                         \
        }                                                                     \
                                                                              \