Turns out we had some long-standing bugs in how we handle termios input speeds. Specifically, we could end up setting the CIBAUD bits despite the user leaving them cleared (i.e. B0, which means that we use the same input and output rate). And once any of these bits were set we failed to clear them on later updates, leading to incorrect rates being reported back to user space.
Both issues could lead to an unexpected input rate being set on subsequent termios updates unless the user actively clears CIBAUD. Fortunately, no in-tree tty driver seems to use the input speed for anything but to suppress line-setting updates, so the impact of this should be mostly limited to the CIBAUD bits sometimes being incorrectly set in returned termios data. The final patch cleans up the conditional compilation of the BOTHER and CIBAUD functionality by not having the latter depend on the former. Johan Johan Hovold (3): tty: fix termios input-speed encoding tty: fix termios input-speed encoding when using BOTHER tty: support CIBAUD without BOTHER drivers/tty/tty_baudrate.c | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) -- 2.18.0