diff options
author | Jeff Layton <jlayton@primarydata.com> | 2014-09-04 10:25:06 -0400 |
---|---|---|
committer | Jeff Layton <jlayton@primarydata.com> | 2014-10-07 14:06:13 -0400 |
commit | 6e129d00689c4d75253d1d428e82047b0aef5891 (patch) | |
tree | 5a23b9faf036d2a2559148136ed73e4c32cba9c5 /fs/locks.c | |
parent | 7ca76311fe6c397e9f332e5e6c79e3310d5ee98a (diff) | |
download | linux-6e129d00689c4d75253d1d428e82047b0aef5891.tar.bz2 |
locks: flock_make_lock should return a struct file_lock (or PTR_ERR)
Eliminate the need for a return pointer.
Signed-off-by: Jeff Layton <jlayton@primarydata.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Diffstat (limited to 'fs/locks.c')
-rw-r--r-- | fs/locks.c | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/fs/locks.c b/fs/locks.c index 314135ad820b..735b8d3fa78c 100644 --- a/fs/locks.c +++ b/fs/locks.c @@ -326,17 +326,18 @@ static inline int flock_translate_cmd(int cmd) { } /* Fill in a file_lock structure with an appropriate FLOCK lock. */ -static int flock_make_lock(struct file *filp, struct file_lock **lock, - unsigned int cmd) +static struct file_lock * +flock_make_lock(struct file *filp, unsigned int cmd) { struct file_lock *fl; int type = flock_translate_cmd(cmd); + if (type < 0) - return type; + return ERR_PTR(type); fl = locks_alloc_lock(); if (fl == NULL) - return -ENOMEM; + return ERR_PTR(-ENOMEM); fl->fl_file = filp; fl->fl_owner = filp; @@ -345,8 +346,7 @@ static int flock_make_lock(struct file *filp, struct file_lock **lock, fl->fl_type = type; fl->fl_end = OFFSET_MAX; - *lock = fl; - return 0; + return fl; } static int assign_type(struct file_lock *fl, long type) @@ -1885,9 +1885,12 @@ SYSCALL_DEFINE2(flock, unsigned int, fd, unsigned int, cmd) !(f.file->f_mode & (FMODE_READ|FMODE_WRITE))) goto out_putf; - error = flock_make_lock(f.file, &lock, cmd); - if (error) + lock = flock_make_lock(f.file, cmd); + if (IS_ERR(lock)) { + error = PTR_ERR(lock); goto out_putf; + } + if (can_sleep) lock->fl_flags |= FL_SLEEP; |