]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blobdiff - drivers/char/moxa.c
char: moxa, prevent opening unavailable ports
[mirror_ubuntu-artful-kernel.git] / drivers / char / moxa.c
index 65b6ff2442c6df4edfd839b37752ded8340df9c9..6799588b009976ca5d0efd98a065fd60f21d902d 100644 (file)
@@ -1189,6 +1189,11 @@ static int moxa_open(struct tty_struct *tty, struct file *filp)
                return -ENODEV;
        }
 
+       if (port % MAX_PORTS_PER_BOARD >= brd->numPorts) {
+               retval = -ENODEV;
+               goto out_unlock;
+       }
+
        ch = &brd->ports[port % MAX_PORTS_PER_BOARD];
        ch->port.count++;
        tty->driver_data = ch;
@@ -1213,8 +1218,8 @@ static int moxa_open(struct tty_struct *tty, struct file *filp)
                                moxa_close_port(tty);
        } else
                ch->port.flags |= ASYNC_NORMAL_ACTIVE;
+out_unlock:
        mutex_unlock(&moxa_openlock);
-
        return retval;
 }