Move tty lookup/reopen to caller
Move tty_driver_lookup_tty() and tty_reopen() from tty_init_dev() into tty_open() (one of the two callers of tty_init_dev()). These calls are not really required in ptmx_open(), the other caller, since ptmx_open() would be setting up a new tty. Changelog[v2]: - remove the lookup and reopen calls from ptmx_open - merge with recent changes to ttydev tree Signed-off-by: Sukadev Bhattiprolu <sukadev@us.ibm.com> Signed-off-by: Alan Cox <alan@redhat.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Родитель
bf970ee46e
Коммит
4a2b5fddd5
|
@ -1376,19 +1376,6 @@ struct tty_struct *tty_init_dev(struct tty_driver *driver, int idx,
|
|||
struct tty_struct *tty;
|
||||
int retval;
|
||||
|
||||
/* check whether we're reopening an existing tty */
|
||||
tty = tty_driver_lookup_tty(driver, idx);
|
||||
|
||||
if (IS_ERR(tty))
|
||||
return tty;
|
||||
|
||||
if (tty) {
|
||||
retval = tty_reopen(tty);
|
||||
if (retval)
|
||||
return ERR_PTR(retval);
|
||||
return tty;
|
||||
}
|
||||
|
||||
/* Check if pty master is being opened multiple times */
|
||||
if (driver->subtype == PTY_TYPE_MASTER &&
|
||||
(driver->flags & TTY_DRIVER_DEVPTS_MEM) && !first_ok)
|
||||
|
@ -1790,7 +1777,7 @@ void tty_release_dev(struct file *filp)
|
|||
|
||||
static int __tty_open(struct inode *inode, struct file *filp)
|
||||
{
|
||||
struct tty_struct *tty;
|
||||
struct tty_struct *tty = NULL;
|
||||
int noctty, retval;
|
||||
struct tty_driver *driver;
|
||||
int index;
|
||||
|
@ -1847,7 +1834,21 @@ retry_open:
|
|||
return -ENODEV;
|
||||
}
|
||||
got_driver:
|
||||
tty = tty_init_dev(driver, index, 0);
|
||||
if (!tty) {
|
||||
/* check whether we're reopening an existing tty */
|
||||
tty = tty_driver_lookup_tty(driver, index);
|
||||
|
||||
if (IS_ERR(tty))
|
||||
return PTR_ERR(tty);
|
||||
}
|
||||
|
||||
if (tty) {
|
||||
retval = tty_reopen(tty);
|
||||
if (retval)
|
||||
tty = ERR_PTR(retval);
|
||||
} else
|
||||
tty = tty_init_dev(driver, index, 0);
|
||||
|
||||
mutex_unlock(&tty_mutex);
|
||||
tty_driver_kref_put(driver);
|
||||
if (IS_ERR(tty))
|
||||
|
|
Загрузка…
Ссылка в новой задаче