mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	tty: don't crash in tty_init_dev when missing tty_port
We currently warn the user when tty->port is not set in tty_init_dev yet. The warning says that the kernel will crash later. And it really will only few lines below at: tty->port->itty = tty; So be nice and avoid the crash -- return an error instead. And update the warning. Signed-off-by: Jiri Slaby <jslaby@suse.cz> Cc: Sudip Mukherjee <sudipm.mukherjee@gmail.com> Link: https://lore.kernel.org/r/20191122101721.7222-1-jslaby@suse.cz Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
		
							parent
							
								
									1250ed7114
								
							
						
					
					
						commit
						2ae0b31e0f
					
				
					 1 changed files with 6 additions and 3 deletions
				
			
		| 
						 | 
					@ -1344,9 +1344,12 @@ struct tty_struct *tty_init_dev(struct tty_driver *driver, int idx)
 | 
				
			||||||
	if (!tty->port)
 | 
						if (!tty->port)
 | 
				
			||||||
		tty->port = driver->ports[idx];
 | 
							tty->port = driver->ports[idx];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	WARN_RATELIMIT(!tty->port,
 | 
						if (WARN_RATELIMIT(!tty->port,
 | 
				
			||||||
			"%s: %s driver does not set tty->port. This will crash the kernel later. Fix the driver!\n",
 | 
								"%s: %s driver does not set tty->port. This would crash the kernel. Fix the driver!\n",
 | 
				
			||||||
			__func__, tty->driver->name);
 | 
								__func__, tty->driver->name)) {
 | 
				
			||||||
 | 
							retval = -EINVAL;
 | 
				
			||||||
 | 
							goto err_release_lock;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	retval = tty_ldisc_lock(tty, 5 * HZ);
 | 
						retval = tty_ldisc_lock(tty, 5 * HZ);
 | 
				
			||||||
	if (retval)
 | 
						if (retval)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue