summaryrefslogtreecommitdiff
path: root/fs/fuse
diff options
context:
space:
mode:
authorMiklos Szeredi <mszeredi@suse.cz>2011-12-13 11:40:59 +0100
committerMiklos Szeredi <mszeredi@suse.cz>2011-12-13 11:40:59 +0100
commit73104b6e37f75f822e3dcf016147c322d1f6dad9 (patch)
tree07e8021e78af4237f645fef86ffe887aee5b4ea1 /fs/fuse
parentb48c6af2086ab2ba8a9c9b6ce9ecb34592ce500c (diff)
downloadlinux-3.10-73104b6e37f75f822e3dcf016147c322d1f6dad9.tar.gz
linux-3.10-73104b6e37f75f822e3dcf016147c322d1f6dad9.tar.bz2
linux-3.10-73104b6e37f75f822e3dcf016147c322d1f6dad9.zip
fuse: llseek fix race
Fix race between lseek(fd, 0, SEEK_CUR) and read/write. This was fixed in generic code by commit 5b6f1eb97d (vfs: lseek(fd, 0, SEEK_CUR) race condition). Signed-off-by: Miklos Szeredi <mszeredi@suse.cz>
Diffstat (limited to 'fs/fuse')
-rw-r--r--fs/fuse/file.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/fs/fuse/file.c b/fs/fuse/file.c
index 19029e97ca2..0c84100acd4 100644
--- a/fs/fuse/file.c
+++ b/fs/fuse/file.c
@@ -1567,6 +1567,10 @@ static loff_t fuse_file_llseek(struct file *file, loff_t offset, int origin)
offset += i_size_read(inode);
break;
case SEEK_CUR:
+ if (offset == 0) {
+ retval = file->f_pos;
+ goto exit;
+ }
offset += file->f_pos;
break;
case SEEK_DATA: