diff options
Diffstat (limited to 'drivers/char')
-rw-r--r-- | drivers/char/moxa.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/char/moxa.c b/drivers/char/moxa.c index 65b6ff2442c..6799588b009 100644 --- a/drivers/char/moxa.c +++ b/drivers/char/moxa.c @@ -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; } |