tty_ioctl: fix the baud_table check in encode_baud_rate
The tty_termios_encode_baud_rate() function as defined by tty_ioctl.c has a problem with the baud_table within. The comparison operators are reversed and as a result this table's entries never match and BOTHER is always used. Signed-off-by: Maciej W. Rozycki <macro@linux-mips.org> Acked-by: Alan Cox <alan@lxorguk.ukuu.org.uk> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Родитель
77bf2bab91
Коммит
75e8b71d55
|
@ -228,7 +228,8 @@ EXPORT_SYMBOL(tty_termios_input_baud_rate);
|
|||
* and will all go away once this is done.
|
||||
*/
|
||||
|
||||
void tty_termios_encode_baud_rate(struct ktermios *termios, speed_t ibaud, speed_t obaud)
|
||||
void tty_termios_encode_baud_rate(struct ktermios *termios,
|
||||
speed_t ibaud, speed_t obaud)
|
||||
{
|
||||
int i = 0;
|
||||
int ifound = -1, ofound = -1;
|
||||
|
@ -263,11 +264,15 @@ void tty_termios_encode_baud_rate(struct ktermios *termios, speed_t ibaud, speed
|
|||
*/
|
||||
|
||||
do {
|
||||
if (obaud - oclose >= baud_table[i] && obaud + oclose <= baud_table[i]) {
|
||||
if (obaud - oclose <= baud_table[i] &&
|
||||
obaud + oclose >= baud_table[i]) {
|
||||
termios->c_cflag |= baud_bits[i];
|
||||
ofound = i;
|
||||
}
|
||||
if (ibaud - iclose >= baud_table[i] && ibaud + iclose <= baud_table[i]) {
|
||||
if (ibaud - iclose <= baud_table[i] &&
|
||||
ibaud + iclose >= baud_table[i]) {
|
||||
/* For the case input == output don't set IBAUD bits
|
||||
if the user didn't do so */
|
||||
if (ofound == i && !ibinput)
|
||||
ifound = i;
|
||||
#ifdef IBSHIFT
|
||||
|
|
Загрузка…
Ссылка в новой задаче