lkml.org 
[lkml]   [2010]   [Dec]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[063/289] isdn/gigaset: bas_gigaset locking fix
    2.6.36-stable review patch.  If anyone has any objections, please let us know.

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

    From: Tilman Schmidt <tilman@imap.cc>

    commit b33ffa5cbf52ee751bb8068218ebb3c742c5a515 upstream.

    Unlock cs->lock before calling error_hangup() which is marked
    "cs->lock must not be held".

    Signed-off-by: Tilman Schmidt <tilman@imap.cc>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

    ---
    drivers/isdn/gigaset/bas-gigaset.c | 6 +++---
    1 file changed, 3 insertions(+), 3 deletions(-)

    --- a/drivers/isdn/gigaset/bas-gigaset.c
    +++ b/drivers/isdn/gigaset/bas-gigaset.c
    @@ -1581,13 +1581,13 @@ static int gigaset_init_bchannel(struct

    ret = starturbs(bcs);
    if (ret < 0) {
    + spin_unlock_irqrestore(&cs->lock, flags);
    dev_err(cs->dev,
    "could not start isochronous I/O for channel B%d: %s\n",
    bcs->channel + 1,
    ret == -EFAULT ? "null URB" : get_usb_rcmsg(ret));
    if (ret != -ENODEV)
    error_hangup(bcs);
    - spin_unlock_irqrestore(&cs->lock, flags);
    return ret;
    }

    @@ -1597,11 +1597,11 @@ static int gigaset_init_bchannel(struct
    dev_err(cs->dev, "could not open channel B%d\n",
    bcs->channel + 1);
    stopurbs(bcs->hw.bas);
    - if (ret != -ENODEV)
    - error_hangup(bcs);
    }

    spin_unlock_irqrestore(&cs->lock, flags);
    + if (ret < 0 && ret != -ENODEV)
    + error_hangup(bcs);
    return ret;
    }




    \
     
     \ /
      Last update: 2010-12-08 02:53    [W:7.809 / U:0.068 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site