diff options
author | Miklos Szeredi <mszeredi@suse.cz> | 2011-12-13 11:40:59 +0100 |
---|---|---|
committer | Miklos Szeredi <mszeredi@suse.cz> | 2011-12-13 11:40:59 +0100 |
commit | 73104b6e37f75f822e3dcf016147c322d1f6dad9 (patch) | |
tree | 07e8021e78af4237f645fef86ffe887aee5b4ea1 /fs/fuse/file.c | |
parent | b48c6af2086ab2ba8a9c9b6ce9ecb34592ce500c (diff) | |
download | lwn-73104b6e37f75f822e3dcf016147c322d1f6dad9.tar.gz lwn-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/file.c')
-rw-r--r-- | fs/fuse/file.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/fs/fuse/file.c b/fs/fuse/file.c index 19029e97ca2f..0c84100acd44 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: |