struct uart_port *port = arg;
        struct stm32_port *stm32port = to_stm32_port(port);
        const struct stm32_usart_offsets *ofs = &stm32port->info->ofs;
+       unsigned long flags;
 
        dmaengine_terminate_async(stm32port->tx_ch);
        stm32_usart_clr_bits(port, ofs->cr3, USART_CR3_DMAT);
        stm32port->tx_dma_busy = false;
 
        /* Let's see if we have pending data to send */
+       spin_lock_irqsave(&port->lock, flags);
        stm32_usart_transmit_chars(port);
+       spin_unlock_irqrestore(&port->lock, flags);
 }
 
 static void stm32_usart_tx_interrupt_enable(struct uart_port *port)