projects
/
firefly-linux-kernel-4.4.55.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge tag 'please-pull-pstore' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl...
[firefly-linux-kernel-4.4.55.git]
/
fs
/
locks.c
diff --git
a/fs/locks.c
b/fs/locks.c
index aed4a957d232df199b73557185ed571cfbcf0ef5..735b8d3fa78c92bf746aff05475be1fa2a82abd6 100644
(file)
--- 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. */
}
/* 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);
{
struct file_lock *fl;
int type = flock_translate_cmd(cmd);
+
if (type < 0)
if (type < 0)
- return
type
;
+ return
ERR_PTR(type)
;
fl = locks_alloc_lock();
if (fl == NULL)
fl = locks_alloc_lock();
if (fl == NULL)
- return
-ENOMEM
;
+ return
ERR_PTR(-ENOMEM)
;
fl->fl_file = filp;
fl->fl_owner = filp;
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;
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)
}
static int assign_type(struct file_lock *fl, long type)
@@
-465,7
+465,7
@@
static int lease_init(struct file *filp, long type, struct file_lock *fl)
if (assign_type(fl, type) != 0)
return -EINVAL;
if (assign_type(fl, type) != 0)
return -EINVAL;
- fl->fl_owner =
current->files
;
+ fl->fl_owner =
filp
;
fl->fl_pid = current->tgid;
fl->fl_file = filp;
fl->fl_pid = current->tgid;
fl->fl_file = filp;
@@
-1885,9
+1885,12
@@
SYSCALL_DEFINE2(flock, unsigned int, fd, unsigned int, cmd)
!(f.file->f_mode & (FMODE_READ|FMODE_WRITE)))
goto out_putf;
!(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;
goto out_putf;
+ }
+
if (can_sleep)
lock->fl_flags |= FL_SLEEP;
if (can_sleep)
lock->fl_flags |= FL_SLEEP;