Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 61446
b: refs/heads/master
c: 6d5e8b0
h: refs/heads/master
v: v3
  • Loading branch information
J. Bruce Fields committed Jul 18, 2007
1 parent 3934de7 commit 0fc4ad7
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 21 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: e32b8ee27b486f682a6d13533cfe6549c8abcdef
refs/heads/master: 6d5e8b05caf074ae5676ad9aaf92e381226a14a7
30 changes: 10 additions & 20 deletions trunk/fs/locks.c
Original file line number Diff line number Diff line change
Expand Up @@ -1343,6 +1343,14 @@ static int __setlease(struct file *filp, long arg, struct file_lock **flp)
struct inode *inode = dentry->d_inode;
int error, rdlease_count = 0, wrlease_count = 0;

if ((current->fsuid != inode->i_uid) && !capable(CAP_LEASE))
return -EACCES;
if (!S_ISREG(inode->i_mode))
return -EINVAL;
error = security_file_lock(filp, arg);
if (error)
return error;

time_out_leases(inode);

BUG_ON(!(*flp)->fl_lmops->fl_break);
Expand Down Expand Up @@ -1426,18 +1434,8 @@ static int __setlease(struct file *filp, long arg, struct file_lock **flp)

int setlease(struct file *filp, long arg, struct file_lock **lease)
{
struct dentry *dentry = filp->f_path.dentry;
struct inode *inode = dentry->d_inode;
int error;

if ((current->fsuid != inode->i_uid) && !capable(CAP_LEASE))
return -EACCES;
if (!S_ISREG(inode->i_mode))
return -EINVAL;
error = security_file_lock(filp, arg);
if (error)
return error;

lock_kernel();
error = __setlease(filp, arg, lease);
unlock_kernel();
Expand All @@ -1464,14 +1462,6 @@ int fcntl_setlease(unsigned int fd, struct file *filp, long arg)
struct inode *inode = dentry->d_inode;
int error;

if ((current->fsuid != inode->i_uid) && !capable(CAP_LEASE))
return -EACCES;
if (!S_ISREG(inode->i_mode))
return -EINVAL;
error = security_file_lock(filp, arg);
if (error)
return error;

locks_init_lock(&fl);
error = lease_init(filp, arg, &fl);
if (error)
Expand All @@ -1485,9 +1475,9 @@ int fcntl_setlease(unsigned int fd, struct file *filp, long arg)

error = fasync_helper(fd, filp, 1, &flp->fl_fasync);
if (error < 0) {
/* remove lease just inserted by __setlease */
/* remove lease just inserted by setlease */
flp->fl_type = F_UNLCK | F_INPROGRESS;
flp->fl_break_time = jiffies- 10;
flp->fl_break_time = jiffies - 10;
time_out_leases(inode);
goto out_unlock;
}
Expand Down

0 comments on commit 0fc4ad7

Please sign in to comment.