mirror of
https://github.com/edk2-porting/linux-next.git
synced 2025-01-03 19:24:02 +08:00
USB-serial fix for v4.20-rc6
Here's a fix for a reported USB-console regression in 4.18 which revealed a long-standing bug in the console implementation. The patch has been in linux-next over night with no reported issues. Signed-off-by: Johan Hovold <johan@kernel.org> -----BEGIN PGP SIGNATURE----- iHUEABYIAB0WIQQHbPq+cpGvN/peuzMLxc3C7H1lCAUCXAlOXAAKCRALxc3C7H1l COC9AP4jozobKxNIgbmP6LAwz34Zv19qZyhi2hOzM0Less5o+QD+PLKS4yFPErNq L6jm+cb1RE3rW9bjrbphoT7PvQoa3QM= =QA9N -----END PGP SIGNATURE----- Merge tag 'usb-serial-4.20-rc6' of https://git.kernel.org/pub/scm/linux/kernel/git/johan/usb-serial into usb-linus Johan writes: USB-serial fix for v4.20-rc6 Here's a fix for a reported USB-console regression in 4.18 which revealed a long-standing bug in the console implementation. The patch has been in linux-next over night with no reported issues. Signed-off-by: Johan Hovold <johan@kernel.org> * tag 'usb-serial-4.20-rc6' of https://git.kernel.org/pub/scm/linux/kernel/git/johan/usb-serial: USB: serial: console: fix reported terminal settings
This commit is contained in:
commit
3caad34eab
@ -1373,7 +1373,13 @@ err_release_lock:
|
||||
return ERR_PTR(retval);
|
||||
}
|
||||
|
||||
static void tty_free_termios(struct tty_struct *tty)
|
||||
/**
|
||||
* tty_save_termios() - save tty termios data in driver table
|
||||
* @tty: tty whose termios data to save
|
||||
*
|
||||
* Locking: Caller guarantees serialisation with tty_init_termios().
|
||||
*/
|
||||
void tty_save_termios(struct tty_struct *tty)
|
||||
{
|
||||
struct ktermios *tp;
|
||||
int idx = tty->index;
|
||||
@ -1392,6 +1398,7 @@ static void tty_free_termios(struct tty_struct *tty)
|
||||
}
|
||||
*tp = tty->termios;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(tty_save_termios);
|
||||
|
||||
/**
|
||||
* tty_flush_works - flush all works of a tty/pty pair
|
||||
@ -1491,7 +1498,7 @@ static void release_tty(struct tty_struct *tty, int idx)
|
||||
WARN_ON(!mutex_is_locked(&tty_mutex));
|
||||
if (tty->ops->shutdown)
|
||||
tty->ops->shutdown(tty);
|
||||
tty_free_termios(tty);
|
||||
tty_save_termios(tty);
|
||||
tty_driver_remove_tty(tty->driver, tty);
|
||||
tty->port->itty = NULL;
|
||||
if (tty->link)
|
||||
|
@ -101,7 +101,6 @@ static int usb_console_setup(struct console *co, char *options)
|
||||
cflag |= PARENB;
|
||||
break;
|
||||
}
|
||||
co->cflag = cflag;
|
||||
|
||||
/*
|
||||
* no need to check the index here: if the index is wrong, console
|
||||
@ -164,6 +163,7 @@ static int usb_console_setup(struct console *co, char *options)
|
||||
serial->type->set_termios(tty, port, &dummy);
|
||||
|
||||
tty_port_tty_set(&port->port, NULL);
|
||||
tty_save_termios(tty);
|
||||
tty_kref_put(tty);
|
||||
}
|
||||
tty_port_set_initialized(&port->port, 1);
|
||||
|
@ -556,6 +556,7 @@ extern struct tty_struct *tty_init_dev(struct tty_driver *driver, int idx);
|
||||
extern void tty_release_struct(struct tty_struct *tty, int idx);
|
||||
extern int tty_release(struct inode *inode, struct file *filp);
|
||||
extern void tty_init_termios(struct tty_struct *tty);
|
||||
extern void tty_save_termios(struct tty_struct *tty);
|
||||
extern int tty_standard_install(struct tty_driver *driver,
|
||||
struct tty_struct *tty);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user