Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 16ae2a87 authored by Alan Cox's avatar Alan Cox Committed by Greg Kroah-Hartman
Browse files

serial: Fix crash if the minimum rate of the device is > 9600 baud



In that situation if the old rate is invalid and the new rate is invalid
and the chip cannot do 9600 baud we report zero, which makes all the
drivers explode.

Instead force the rate based on min/max

Signed-off-by: default avatarAlan Cox <alan@linux.intel.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 4547be78
Loading
Loading
Loading
Loading
+12 −5
Original line number Original line Diff line number Diff line
@@ -385,13 +385,20 @@ uart_get_baud_rate(struct uart_port *port, struct ktermios *termios,
		}
		}


		/*
		/*
		 * As a last resort, if the quotient is zero,
		 * As a last resort, if the range cannot be met then clip to
		 * default to 9600 bps
		 * the nearest chip supported rate.
		 */
		 */
		if (!hung_up)
		if (!hung_up) {
			tty_termios_encode_baud_rate(termios, 9600, 9600);
			if (baud <= min)
				tty_termios_encode_baud_rate(termios,
							min + 1, min + 1);
			else
				tty_termios_encode_baud_rate(termios,
							max - 1, max - 1);
		}
		}

	}
	/* Should never happen */
	WARN_ON(1);
	return 0;
	return 0;
}
}