USB: serial: f81534: fix division by zero on line-speed change
Subsystems (3)
Johan Hovold
maintainerPATCH 1/1 USB: serial: f81534: fix division by zero on line-speed change
The driver leaves the line speed unchanged in case a requested speed is not supported. Make sure to handle the case where the current speed is B0 (hangup) without dividing by zero when determining the clock source.
Fixes 3aacac02f385 ("USB: serial: f81534: add high baud rate support")
Cc [email protected] # 4.16
Cc Ji-Ze Hong (Peter Hong) <[email protected]>
Signed-off-by Johan Hovold <[email protected]>
--- drivers/usb/serial/f81534.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-)
drivers/usb/serial/f81534.c +7 -5
@@ -536,9 +536,6 @@ static int f81534_submit_writer(struct usb_serial_port *port, gfp_t mem_flags)static u32 f81534_calc_baud_divisor (u32 baudrate,u32 clockrate) { -if (!baudrate) -return 0 ; -/* Round to nearest divisor */ return DIV_ROUND_CLOSEST (clockrate, baudrate); }
@@ -568,9 +565,14 @@ static int f81534_set_port_config(struct usb_serial_port *port,u32 baud_list[] = {baudrate, old_baudrate,F81534_DEFAULT_BAUD_RATE };for (i =0 ; i <ARRAY_SIZE (baud_list); ++i) { - idx =f81534_find_clk (baud_list[i]); + baudrate = baud_list[i]; +if (baudrate ==0 ) { +tty_encode_baud_rate (tty,0 ,0 ); +return 0 ; + } + + idx =f81534_find_clk (baudrate);if (idx >=0 ) { - baudrate = baud_list[i];tty_encode_baud_rate (tty, baudrate, baudrate);break ; }
Signature · 1 line
2.37.4
Quoted 8 lines · Johan Hovold
The driver leaves the line speed unchanged in case a requested speed is not supported. Make sure to handle the case where the current speed is B0 (hangup) without dividing by zero when determining the clock source.
Fixes 3aacac02f385 ("USB: serial: f81534: add high baud rate support")Cc [email protected] # 4.16Cc Ji-Ze Hong (Peter Hong) <[email protected]>Signed-off-by Johan Hovold <[email protected]>
Reviewed-by Greg Kroah-Hartman <[email protected]>