virtio: console: replace EMFILE with EBUSY for already-open port
authorAmit Shah <amit.shah@redhat.com>
Mon, 15 Apr 2013 02:30:15 +0000 (12:00 +0930)
committerRusty Russell <rusty@rustcorp.com.au>
Mon, 15 Apr 2013 05:47:39 +0000 (15:17 +0930)
Returning EMFILE (process has too many open files) is incorrect to
indicate a port is already open by another process.  Use EBUSY for that.

This does change what we report to userspace, but I believe userspace
can look at it this way: it gets EBUSY, a new error code, instead of
EMFILE.  It's still an error, and that's not changing.

Reported-by: Mateusz Guzik <mguzik@redhat.com>
Signed-off-by: Amit Shah <amit.shah@redhat.com>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
drivers/char/virtio_console.c

index f4f31fe..5ee7765 100644 (file)
@@ -1036,7 +1036,7 @@ static int port_fops_open(struct inode *inode, struct file *filp)
        spin_lock_irq(&port->inbuf_lock);
        if (port->guest_connected) {
                spin_unlock_irq(&port->inbuf_lock);
-               ret = -EMFILE;
+               ret = -EBUSY;
                goto out;
        }