lkml.org 
[lkml]   [2010]   [Oct]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 2/4] locks: fix leaks on setlease errors
    Date
    We're depending on setlease to free the passed-in lease on failure.

    Signed-off-by: J. Bruce Fields <bfields@redhat.com>
    ---
    fs/locks.c | 12 +++++++-----
    1 files changed, 7 insertions(+), 5 deletions(-)

    diff --git a/fs/locks.c b/fs/locks.c
    index 06c7773..63fbc41 100644
    --- a/fs/locks.c
    +++ b/fs/locks.c
    @@ -1371,20 +1371,22 @@ int generic_setlease(struct file *filp, long arg, struct file_lock **flp)
    struct inode *inode = dentry->d_inode;
    int error, rdlease_count = 0, wrlease_count = 0;

    + lease = *flp;
    +
    + error = -EACCES;
    if ((current_fsuid() != inode->i_uid) && !capable(CAP_LEASE))
    - return -EACCES;
    + goto out;
    + error = -EINVAL;
    if (!S_ISREG(inode->i_mode))
    - return -EINVAL;
    + goto out;
    error = security_file_lock(filp, arg);
    if (error)
    - return error;
    + goto out;

    time_out_leases(inode);

    BUG_ON(!(*flp)->fl_lmops->fl_break);

    - lease = *flp;
    -
    if (arg != F_UNLCK) {
    error = -EAGAIN;
    if ((arg == F_RDLCK) && (atomic_read(&inode->i_writecount) > 0))
    --
    1.7.1


    \
     
     \ /
      Last update: 2010-10-30 23:35    [W:0.021 / U:161.732 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site