lkml.org 
[lkml]   [2010]   [Jul]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectMEDIA: lirc, improper locking
    Hi,

    stanse found a locking error in lirc_dev_fop_read:
    if (mutex_lock_interruptible(&ir->irctl_lock))
    return -ERESTARTSYS;
    ...
    while (written < length && ret == 0) {
    if (mutex_lock_interruptible(&ir->irctl_lock)) { #1
    ret = -ERESTARTSYS;
    break;
    }
    ...
    }

    remove_wait_queue(&ir->buf->wait_poll, &wait);
    set_current_state(TASK_RUNNING);
    mutex_unlock(&ir->irctl_lock); #2

    If lock at #1 fails, it beaks out of the loop, with the lock unlocked,
    but there is another "unlock" at #2.

    regards,
    --
    js


    \
     
     \ /
      Last update: 2010-07-07 14:55    [W:0.021 / U:210.780 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site