lkml.org 
[lkml]   [2011]   [May]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[patch 2/2] ptp: fix some locking bugs in ptp_read()
    There was an unlock missing on an error path, and a double unlock on
    another error path.

    Signed-off-by: Dan Carpenter <error27@gmail.com>

    diff --git a/drivers/ptp/ptp_chardev.c b/drivers/ptp/ptp_chardev.c
    index 93fa22d..e7f301da2 100644
    --- a/drivers/ptp/ptp_chardev.c
    +++ b/drivers/ptp/ptp_chardev.c
    @@ -130,8 +130,10 @@ ssize_t ptp_read(struct posix_clock *pc,
    return -ERESTARTSYS;
    }

    - if (ptp->defunct)
    + if (ptp->defunct) {
    + mutex_unlock(&ptp->tsevq_mux);
    return -ENODEV;
    + }

    spin_lock_irqsave(&queue->lock, flags);

    @@ -151,10 +153,8 @@ ssize_t ptp_read(struct posix_clock *pc,

    mutex_unlock(&ptp->tsevq_mux);

    - if (copy_to_user(buf, event, cnt)) {
    - mutex_unlock(&ptp->tsevq_mux);
    + if (copy_to_user(buf, event, cnt))
    return -EFAULT;
    - }

    return cnt;
    }

    \
     
     \ /
      Last update: 2011-05-29 21:57    [W:0.021 / U:61.044 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site