forked from mirrors/linux
		
	drivers: tty: Merge alloc_tty_struct and initialize_tty_struct
The two functions alloc_tty_struct and initialize_tty_struct are always called together. Merge them into alloc_tty_struct, updating its prototype and the only two callers of these functions. Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
		
							parent
							
								
									493671a2ce
								
							
						
					
					
						commit
						2c964a2f41
					
				
					 3 changed files with 23 additions and 37 deletions
				
			
		| 
						 | 
				
			
			@ -316,7 +316,7 @@ static int pty_resize(struct tty_struct *tty,  struct winsize *ws)
 | 
			
		|||
 *	pty_common_install		-	set up the pty pair
 | 
			
		||||
 *	@driver: the pty driver
 | 
			
		||||
 *	@tty: the tty being instantiated
 | 
			
		||||
 *	@bool: legacy, true if this is BSD style
 | 
			
		||||
 *	@legacy: true if this is BSD style
 | 
			
		||||
 *
 | 
			
		||||
 *	Perform the initial set up for the tty/pty pair. Called from the
 | 
			
		||||
 *	tty layer when the port is first opened.
 | 
			
		||||
| 
						 | 
				
			
			@ -331,18 +331,17 @@ static int pty_common_install(struct tty_driver *driver, struct tty_struct *tty,
 | 
			
		|||
	int idx = tty->index;
 | 
			
		||||
	int retval = -ENOMEM;
 | 
			
		||||
 | 
			
		||||
	o_tty = alloc_tty_struct();
 | 
			
		||||
	if (!o_tty)
 | 
			
		||||
		goto err;
 | 
			
		||||
	ports[0] = kmalloc(sizeof **ports, GFP_KERNEL);
 | 
			
		||||
	ports[1] = kmalloc(sizeof **ports, GFP_KERNEL);
 | 
			
		||||
	if (!ports[0] || !ports[1])
 | 
			
		||||
		goto err_free_tty;
 | 
			
		||||
		goto err;
 | 
			
		||||
	if (!try_module_get(driver->other->owner)) {
 | 
			
		||||
		/* This cannot in fact currently happen */
 | 
			
		||||
		goto err_free_tty;
 | 
			
		||||
		goto err;
 | 
			
		||||
	}
 | 
			
		||||
	initialize_tty_struct(o_tty, driver->other, idx);
 | 
			
		||||
	o_tty = alloc_tty_struct(driver->other, idx);
 | 
			
		||||
	if (!o_tty)
 | 
			
		||||
		goto err_put_module;
 | 
			
		||||
 | 
			
		||||
	if (legacy) {
 | 
			
		||||
		/* We always use new tty termios data so we can do this
 | 
			
		||||
| 
						 | 
				
			
			@ -387,12 +386,12 @@ static int pty_common_install(struct tty_driver *driver, struct tty_struct *tty,
 | 
			
		|||
		tty_free_termios(tty);
 | 
			
		||||
err_deinit_tty:
 | 
			
		||||
	deinitialize_tty_struct(o_tty);
 | 
			
		||||
	free_tty_struct(o_tty);
 | 
			
		||||
err_put_module:
 | 
			
		||||
	module_put(o_tty->driver->owner);
 | 
			
		||||
err_free_tty:
 | 
			
		||||
err:
 | 
			
		||||
	kfree(ports[0]);
 | 
			
		||||
	kfree(ports[1]);
 | 
			
		||||
	free_tty_struct(o_tty);
 | 
			
		||||
err:
 | 
			
		||||
	return retval;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -156,20 +156,6 @@ static void release_tty(struct tty_struct *tty, int idx);
 | 
			
		|||
static void __proc_set_tty(struct task_struct *tsk, struct tty_struct *tty);
 | 
			
		||||
static void proc_set_tty(struct task_struct *tsk, struct tty_struct *tty);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *	alloc_tty_struct	-	allocate a tty object
 | 
			
		||||
 *
 | 
			
		||||
 *	Return a new empty tty structure. The data fields have not
 | 
			
		||||
 *	been initialized in any way but has been zeroed
 | 
			
		||||
 *
 | 
			
		||||
 *	Locking: none
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
struct tty_struct *alloc_tty_struct(void)
 | 
			
		||||
{
 | 
			
		||||
	return kzalloc(sizeof(struct tty_struct), GFP_KERNEL);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *	free_tty_struct		-	free a disused tty
 | 
			
		||||
 *	@tty: tty struct to free
 | 
			
		||||
| 
						 | 
				
			
			@ -1455,12 +1441,11 @@ struct tty_struct *tty_init_dev(struct tty_driver *driver, int idx)
 | 
			
		|||
	if (!try_module_get(driver->owner))
 | 
			
		||||
		return ERR_PTR(-ENODEV);
 | 
			
		||||
 | 
			
		||||
	tty = alloc_tty_struct();
 | 
			
		||||
	tty = alloc_tty_struct(driver, idx);
 | 
			
		||||
	if (!tty) {
 | 
			
		||||
		retval = -ENOMEM;
 | 
			
		||||
		goto err_module_put;
 | 
			
		||||
	}
 | 
			
		||||
	initialize_tty_struct(tty, driver, idx);
 | 
			
		||||
 | 
			
		||||
	tty_lock(tty);
 | 
			
		||||
	retval = tty_driver_install_tty(driver, tty);
 | 
			
		||||
| 
						 | 
				
			
			@ -3003,19 +2988,21 @@ static struct device *tty_get_device(struct tty_struct *tty)
 | 
			
		|||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *	initialize_tty_struct
 | 
			
		||||
 *	@tty: tty to initialize
 | 
			
		||||
 *	alloc_tty_struct
 | 
			
		||||
 *
 | 
			
		||||
 *	This subroutine initializes a tty structure that has been newly
 | 
			
		||||
 *	allocated.
 | 
			
		||||
 *	This subroutine allocates and initializes a tty structure.
 | 
			
		||||
 *
 | 
			
		||||
 *	Locking: none - tty in question must not be exposed at this point
 | 
			
		||||
 *	Locking: none - tty in question is not exposed at this point
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
void initialize_tty_struct(struct tty_struct *tty,
 | 
			
		||||
		struct tty_driver *driver, int idx)
 | 
			
		||||
struct tty_struct *alloc_tty_struct(struct tty_driver *driver, int idx)
 | 
			
		||||
{
 | 
			
		||||
	memset(tty, 0, sizeof(struct tty_struct));
 | 
			
		||||
	struct tty_struct *tty;
 | 
			
		||||
 | 
			
		||||
	tty = kzalloc(sizeof(*tty), GFP_KERNEL);
 | 
			
		||||
	if (!tty)
 | 
			
		||||
		return NULL;
 | 
			
		||||
 | 
			
		||||
	kref_init(&tty->kref);
 | 
			
		||||
	tty->magic = TTY_MAGIC;
 | 
			
		||||
	tty_ldisc_init(tty);
 | 
			
		||||
| 
						 | 
				
			
			@ -3039,6 +3026,8 @@ void initialize_tty_struct(struct tty_struct *tty,
 | 
			
		|||
	tty->index = idx;
 | 
			
		||||
	tty_line_name(driver, idx, tty->name);
 | 
			
		||||
	tty->dev = tty_get_device(tty);
 | 
			
		||||
 | 
			
		||||
	return tty;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -477,13 +477,11 @@ extern int tty_mode_ioctl(struct tty_struct *tty, struct file *file,
 | 
			
		|||
			unsigned int cmd, unsigned long arg);
 | 
			
		||||
extern int tty_perform_flush(struct tty_struct *tty, unsigned long arg);
 | 
			
		||||
extern void tty_default_fops(struct file_operations *fops);
 | 
			
		||||
extern struct tty_struct *alloc_tty_struct(void);
 | 
			
		||||
extern struct tty_struct *alloc_tty_struct(struct tty_driver *driver, int idx);
 | 
			
		||||
extern int tty_alloc_file(struct file *file);
 | 
			
		||||
extern void tty_add_file(struct tty_struct *tty, struct file *file);
 | 
			
		||||
extern void tty_free_file(struct file *file);
 | 
			
		||||
extern void free_tty_struct(struct tty_struct *tty);
 | 
			
		||||
extern void initialize_tty_struct(struct tty_struct *tty,
 | 
			
		||||
		struct tty_driver *driver, int idx);
 | 
			
		||||
extern void deinitialize_tty_struct(struct tty_struct *tty);
 | 
			
		||||
extern struct tty_struct *tty_init_dev(struct tty_driver *driver, int idx);
 | 
			
		||||
extern int tty_release(struct inode *inode, struct file *filp);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue