diff options
author | Jeff Layton <jeff.layton@primarydata.com> | 2015-02-17 17:08:23 -0500 |
---|---|---|
committer | Jeff Layton <jeff.layton@primarydata.com> | 2015-02-17 17:08:23 -0500 |
commit | 2e2f756f81edd7c3ba6ed384385ae1d6491652eb (patch) | |
tree | e68195e69bebc73b002f3354dc388c83d703a8f5 /fs/locks.c | |
parent | 267f1128583074b575b90a58de4dcb12dd25af96 (diff) | |
download | op-kernel-dev-2e2f756f81edd7c3ba6ed384385ae1d6491652eb.zip op-kernel-dev-2e2f756f81edd7c3ba6ed384385ae1d6491652eb.tar.gz |
locks: fix list insertion when lock is split in two
In the case where we're splitting a lock in two, the current code
the new "left" lock in the incorrect spot. It's inserted just
before "right" when it should instead be inserted just before the
new lock.
When we add a new lock, set "fl" to that value so that we can
add "left" before it.
Reported-by: Al Viro <viro@ZenIV.linux.org.uk>
Signed-off-by: Jeff Layton <jeff.layton@primarydata.com>
Diffstat (limited to 'fs/locks.c')
-rw-r--r-- | fs/locks.c | 1 |
1 files changed, 1 insertions, 0 deletions
@@ -1107,6 +1107,7 @@ static int __posix_lock_file(struct inode *inode, struct file_lock *request, str } locks_copy_lock(new_fl, request); locks_insert_lock_ctx(new_fl, &fl->fl_list); + fl = new_fl; new_fl = NULL; } if (right) { |