diff options
| -rw-r--r-- | drivers/char/virtio_console.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/drivers/char/virtio_console.c b/drivers/char/virtio_console.c index 21b621343033..2f4f0b23ea00 100644 --- a/drivers/char/virtio_console.c +++ b/drivers/char/virtio_console.c | |||
| @@ -711,6 +711,7 @@ static int port_fops_open(struct inode *inode, struct file *filp) | |||
| 711 | { | 711 | { |
| 712 | struct cdev *cdev = inode->i_cdev; | 712 | struct cdev *cdev = inode->i_cdev; |
| 713 | struct port *port; | 713 | struct port *port; |
| 714 | int ret; | ||
| 714 | 715 | ||
| 715 | port = container_of(cdev, struct port, cdev); | 716 | port = container_of(cdev, struct port, cdev); |
| 716 | filp->private_data = port; | 717 | filp->private_data = port; |
| @@ -719,14 +720,17 @@ static int port_fops_open(struct inode *inode, struct file *filp) | |||
| 719 | * Don't allow opening of console port devices -- that's done | 720 | * Don't allow opening of console port devices -- that's done |
| 720 | * via /dev/hvc | 721 | * via /dev/hvc |
| 721 | */ | 722 | */ |
| 722 | if (is_console_port(port)) | 723 | if (is_console_port(port)) { |
| 723 | return -ENXIO; | 724 | ret = -ENXIO; |
| 725 | goto out; | ||
| 726 | } | ||
| 724 | 727 | ||
| 725 | /* Allow only one process to open a particular port at a time */ | 728 | /* Allow only one process to open a particular port at a time */ |
| 726 | spin_lock_irq(&port->inbuf_lock); | 729 | spin_lock_irq(&port->inbuf_lock); |
| 727 | if (port->guest_connected) { | 730 | if (port->guest_connected) { |
| 728 | spin_unlock_irq(&port->inbuf_lock); | 731 | spin_unlock_irq(&port->inbuf_lock); |
| 729 | return -EMFILE; | 732 | ret = -EMFILE; |
| 733 | goto out; | ||
| 730 | } | 734 | } |
| 731 | 735 | ||
| 732 | port->guest_connected = true; | 736 | port->guest_connected = true; |
| @@ -745,6 +749,8 @@ static int port_fops_open(struct inode *inode, struct file *filp) | |||
| 745 | send_control_msg(filp->private_data, VIRTIO_CONSOLE_PORT_OPEN, 1); | 749 | send_control_msg(filp->private_data, VIRTIO_CONSOLE_PORT_OPEN, 1); |
| 746 | 750 | ||
| 747 | return 0; | 751 | return 0; |
| 752 | out: | ||
| 753 | return ret; | ||
| 748 | } | 754 | } |
| 749 | 755 | ||
| 750 | /* | 756 | /* |
