lkml.org 
[lkml]   [2009]   [Sep]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 01/79] tty: gigaset: really fix chars_in_buffer
    Date
    From: Tilman Schmidt <tilman@imap.cc>

    The tty_operation chars_in_buffer() is not allowed to return a negative
    value to signal an error. Corrects the problem flagged by commit
    23198fda7182969b619613a555f8645fdc3dc334, "tty: fix chars_in_buffers".

    Signed-off-by: Tilman Schmidt <tilman@imap.cc>
    Cc: "David S. Miller" <davem@davemloft.net>
    Cc: stable <stable@kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
    ---
    drivers/isdn/gigaset/interface.c | 19 +++++++------------
    1 files changed, 7 insertions(+), 12 deletions(-)

    diff --git a/drivers/isdn/gigaset/interface.c b/drivers/isdn/gigaset/interface.c
    index 8ff7e35..f33ac27 100644
    --- a/drivers/isdn/gigaset/interface.c
    +++ b/drivers/isdn/gigaset/interface.c
    @@ -408,33 +408,28 @@ static int if_write_room(struct tty_struct *tty)
    return retval;
    }

    -/* FIXME: This function does not have error returns */
    -
    static int if_chars_in_buffer(struct tty_struct *tty)
    {
    struct cardstate *cs;
    - int retval = -ENODEV;
    + int retval = 0;

    cs = (struct cardstate *) tty->driver_data;
    if (!cs) {
    pr_err("%s: no cardstate\n", __func__);
    - return -ENODEV;
    + return 0;
    }

    gig_dbg(DEBUG_IF, "%u: %s()", cs->minor_index, __func__);

    - if (mutex_lock_interruptible(&cs->mutex))
    - return -ERESTARTSYS; // FIXME -EINTR?
    + mutex_lock(&cs->mutex);

    - if (!cs->connected) {
    + if (!cs->connected)
    gig_dbg(DEBUG_IF, "not connected");
    - retval = -ENODEV;
    - } else if (!cs->open_count)
    + else if (!cs->open_count)
    dev_warn(cs->dev, "%s: device not opened\n", __func__);
    - else if (cs->mstate != MS_LOCKED) {
    + else if (cs->mstate != MS_LOCKED)
    dev_warn(cs->dev, "can't write to unlocked device\n");
    - retval = -EBUSY;
    - } else
    + else
    retval = cs->ops->chars_in_buffer(cs);

    mutex_unlock(&cs->mutex);
    --
    1.6.4.2


    \
     
     \ /
      Last update: 2009-09-19 23:39    [W:5.570 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site