Messages in this thread Patch in this message | | | From | Dirk Eibach <> | Subject | [PATCH] char: prevent opening unavailable ports in moxa.c | Date | Tue, 9 Jun 2009 08:57:36 +0200 |
| |
In moxa.c there are 32 minor numbers reserved for each device. The number of ports actually available per device is stored in moxa_board_conf->numPorts. This number is not considered in moxa_open(). Opening a port that is not available results in a kernel oops. This patch adds a test to moxa_open() that prevents opening unavailable ports.
Signed-off-by: Dirk Eibach <eibach@gdsys.de> --- drivers/char/moxa.c | 5 +++++ 1 files changed, 5 insertions(+), 0 deletions(-)
diff --git a/drivers/char/moxa.c b/drivers/char/moxa.c index 4a4cab7..65b6ff2 100644 --- a/drivers/char/moxa.c +++ b/drivers/char/moxa.c @@ -1184,6 +1184,11 @@ static int moxa_open(struct tty_struct *tty, struct file *filp) return -ENODEV; } + if (port % MAX_PORTS_PER_BOARD >= brd->numPorts) { + mutex_unlock(&moxa_openlock); + return -ENODEV; + } + ch = &brd->ports[port % MAX_PORTS_PER_BOARD]; ch->port.count++; tty->driver_data = ch; -- 1.5.6.5
| |