lkml.org 
[lkml]   [2012]   [Apr]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[ 10/42] uwb: fix use of del_timer_sync() in interrupt
    3.0-stable review patch.  If anyone has any objections, please let me know.

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

    From: Oliver Neukum <oliver@neukum.org>

    commit 9426cd05682745d1024dbabdec5631309bd2f480 upstream.

    del_timer_sync() cannot be used in interrupt.
    Replace it with del_timer() and a flag

    Signed-off-by: Oliver Neukum <oneukum@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/uwb/neh.c | 12 +++++++++++-
    1 file changed, 11 insertions(+), 1 deletion(-)

    --- a/drivers/uwb/neh.c
    +++ b/drivers/uwb/neh.c
    @@ -106,6 +106,7 @@ struct uwb_rc_neh {
    u8 evt_type;
    __le16 evt;
    u8 context;
    + u8 completed;
    uwb_rc_cmd_cb_f cb;
    void *arg;

    @@ -408,6 +409,7 @@ static void uwb_rc_neh_grok_event(struct
    struct device *dev = &rc->uwb_dev.dev;
    struct uwb_rc_neh *neh;
    struct uwb_rceb *notif;
    + unsigned long flags;

    if (rceb->bEventContext == 0) {
    notif = kmalloc(size, GFP_ATOMIC);
    @@ -421,7 +423,11 @@ static void uwb_rc_neh_grok_event(struct
    } else {
    neh = uwb_rc_neh_lookup(rc, rceb);
    if (neh) {
    - del_timer_sync(&neh->timer);
    + spin_lock_irqsave(&rc->neh_lock, flags);
    + /* to guard against a timeout */
    + neh->completed = 1;
    + del_timer(&neh->timer);
    + spin_unlock_irqrestore(&rc->neh_lock, flags);
    uwb_rc_neh_cb(neh, rceb, size);
    } else
    dev_warn(dev, "event 0x%02x/%04x/%02x (%zu bytes): nobody cared\n",
    @@ -567,6 +573,10 @@ static void uwb_rc_neh_timer(unsigned lo
    unsigned long flags;

    spin_lock_irqsave(&rc->neh_lock, flags);
    + if (neh->completed) {
    + spin_unlock_irqrestore(&rc->neh_lock, flags);
    + return;
    + }
    if (neh->context)
    __uwb_rc_neh_rm(rc, neh);
    else



    \
     
     \ /
      Last update: 2012-04-25 00:49    [W:0.058 / U:58.972 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site