lkml.org 
[lkml]   [2009]   [Jun]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[patch 12/35] char: moxa, prevent opening unavailable ports
    2.6.29-stable review patch.  If anyone has any objections, please let us know.

    ------------------

    From: Dirk Eibach <eibach@gdsys.de>

    commit a90b037583d5f1ae3e54e9c687c79df82d1d34a4 upstream.

    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.

    [akpm@linux-foundation.org: avoid multiple returns]
    Signed-off-by: Dirk Eibach <eibach@gdsys.de>
    Signed-off-by: Jiri Slaby <jirislaby@gmail.com>
    Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

    ---
    drivers/char/moxa.c | 7 ++++++-
    1 file changed, 6 insertions(+), 1 deletion(-)

    --- a/drivers/char/moxa.c
    +++ b/drivers/char/moxa.c
    @@ -1184,6 +1184,11 @@ static int moxa_open(struct tty_struct *
    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;
    @@ -1208,8 +1213,8 @@ static int moxa_open(struct tty_struct *
    moxa_close_port(tty);
    } else
    ch->port.flags |= ASYNC_NORMAL_ACTIVE;
    +out_unlock:
    mutex_unlock(&moxa_openlock);
    -
    return retval;
    }




    \
     
     \ /
      Last update: 2009-07-01 03:03    [W:0.022 / U:298.752 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site