virtio: console: open: Use a common path for error handling
Just re-arrange code for future patches. Signed-off-by: Amit Shah <amit.shah@redhat.com> Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
parent
7a2853178d
commit
8ad37e83c8
1 changed files with 9 additions and 3 deletions
|
@ -711,6 +711,7 @@ static int port_fops_open(struct inode *inode, struct file *filp)
|
|||
{
|
||||
struct cdev *cdev = inode->i_cdev;
|
||||
struct port *port;
|
||||
int ret;
|
||||
|
||||
port = container_of(cdev, struct port, cdev);
|
||||
filp->private_data = port;
|
||||
|
@ -719,14 +720,17 @@ static int port_fops_open(struct inode *inode, struct file *filp)
|
|||
* Don't allow opening of console port devices -- that's done
|
||||
* via /dev/hvc
|
||||
*/
|
||||
if (is_console_port(port))
|
||||
return -ENXIO;
|
||||
if (is_console_port(port)) {
|
||||
ret = -ENXIO;
|
||||
goto out;
|
||||
}
|
||||
|
||||
/* Allow only one process to open a particular port at a time */
|
||||
spin_lock_irq(&port->inbuf_lock);
|
||||
if (port->guest_connected) {
|
||||
spin_unlock_irq(&port->inbuf_lock);
|
||||
return -EMFILE;
|
||||
ret = -EMFILE;
|
||||
goto out;
|
||||
}
|
||||
|
||||
port->guest_connected = true;
|
||||
|
@ -745,6 +749,8 @@ static int port_fops_open(struct inode *inode, struct file *filp)
|
|||
send_control_msg(filp->private_data, VIRTIO_CONSOLE_PORT_OPEN, 1);
|
||||
|
||||
return 0;
|
||||
out:
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
Reference in a new issue