mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	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:
		
							parent
							
								
									bf970ee46e
								
							
						
					
					
						commit
						4a2b5fddd5
					
				
					 1 changed files with 16 additions and 15 deletions
				
			
		| 
						 | 
				
			
			@ -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 @@ static int __tty_open(struct inode *inode, struct file *filp)
 | 
			
		|||
		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))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue