Skip to content

Commit

Permalink
virtio: console: open: Use a common path for error handling
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Amit Shah authored and Rusty Russell committed Oct 21, 2010
1 parent 7a28531 commit 8ad37e8
Showing 1 changed file with 9 additions and 3 deletions.
12 changes: 9 additions & 3 deletions drivers/char/virtio_console.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
Expand All @@ -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;
}

/*
Expand Down

0 comments on commit 8ad37e8

Please sign in to comment.