serial: 8250_dw: Do not reclock if already at correct rate
authorPeter Collingbourne <pcc@google.com>
Thu, 22 Feb 2024 19:26:34 +0000 (11:26 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 2 Mar 2024 21:11:03 +0000 (22:11 +0100)
commite5d6bd25f93d6ae158bb4cd04956cb497a85b8ef
tree8430541d7e01f075d70bd4d78f982d624d4f9a30
parent672448ccf9b6a676f96f9352cbf91f4d35f4084a
serial: 8250_dw: Do not reclock if already at correct rate

When userspace opens the console, we call set_termios() passing a
termios with the console's configured baud rate. Currently this causes
dw8250_set_termios() to disable and then re-enable the UART clock at
the same frequency as it was originally. This can cause corruption
of any concurrent console output. Fix it by skipping the reclocking
if we are already at the correct rate.

Signed-off-by: Peter Collingbourne <pcc@google.com>
Fixes: 4e26b134bd17 ("serial: 8250_dw: clock rate handling for all ACPI platforms")
Cc: stable@vger.kernel.org
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/r/20240222192635.1050502-1-pcc@google.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/8250/8250_dw.c