serial: 8250_dw: Honor clk_round_rate errors in dw8250_set_termios
authorHeiko Stuebner <heiko@sntech.de>
Thu, 9 Mar 2017 06:41:16 +0000 (07:41 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 14 Mar 2017 02:48:11 +0000 (10:48 +0800)
commit09498087f922bb623b66db9e89c6fd11a3799867
tree18c24d819f0d40d4f74dbaf187b9a9c7f4cebd4c
parent4495c08e84729385774601b5146d51d9e5849f81
serial: 8250_dw: Honor clk_round_rate errors in dw8250_set_termios

clk_round_rate returns a signed long and may possibly return errors
in it, for example if there is no possible rate.

Till now dw8250_set_termios ignored any error, the signednes and would
just use the value as input to clk_set_rate. This of course falls apart
if there is an actual error, so check for errors and only try to set
a rate if the value is actually valid.

This turned up on some Rockchip platforms after commit
6a171b299379 ("serial: 8250_dw: Allow hardware flow control to be used")
enabled set_termios callback in all cases, not only ACPI.

Fixes: 6a171b299379 ("serial: 8250_dw: Allow hardware flow control to be used")
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/8250/8250_dw.c