diff --git a/drivers/serial/8250.c b/drivers/serial/8250.c
index 96a585e1cee8226a449d3e0174c98bf9a1b6ff77..6d0ce64163e5a12221fb926c2600ceae30fbfb62 100644
--- a/drivers/serial/8250.c
+++ b/drivers/serial/8250.c
@@ -2228,7 +2228,9 @@ serial8250_set_termios(struct uart_port *port, struct ktermios *termios,
 	}
 	serial8250_set_mctrl(&up->port, up->port.mctrl);
 	spin_unlock_irqrestore(&up->port.lock, flags);
-	tty_termios_encode_baud_rate(termios, baud, baud);
+	/* Don't rewrite B0 */
+	if (tty_termios_baud_rate(termios))
+		tty_termios_encode_baud_rate(termios, baud, baud);
 }
 
 static void