path: root/fs
diff options
authorRoel Kluin <>2011-12-13 10:37:00 +0100
committerGreg Kroah-Hartman <>2011-12-21 12:58:34 -0800
commitb0c1dfb82b43b53fb60104f7969b87b7c54cc832 (patch)
tree0e52fb0edf5ce62567613f2b07ea99b50c951065 /fs
parent3425a017beef04b5152fb6c3c7b2b2768473ed21 (diff)
fuse: fix llseek bug
commit b48c6af2086ab2ba8a9c9b6ce9ecb34592ce500c upstream. The test in fuse_file_llseek() "not SEEK_CUR or not SEEK_SET" always evaluates to true. This was introduced in 3.1 by commit 06222e49 (fs: handle SEEK_HOLE/SEEK_DATA properly in all fs's that define their own llseek) and changed the behavior of SEEK_CUR and SEEK_SET to always retrieve the file attributes. This is a performance regression. Fix the test so that it makes sense. Signed-off-by: Miklos Szeredi <> CC: Josef Bacik <> CC: Al Viro <> Signed-off-by: Greg Kroah-Hartman <>
Diffstat (limited to 'fs')
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/fuse/file.c b/fs/fuse/file.c
index 594f07a81c28..19029e97ca2f 100644
--- a/fs/fuse/file.c
+++ b/fs/fuse/file.c
@@ -1556,7 +1556,7 @@ static loff_t fuse_file_llseek(struct file *file, loff_t offset, int origin)
struct inode *inode = file->f_path.dentry->d_inode;
- if (origin != SEEK_CUR || origin != SEEK_SET) {
+ if (origin != SEEK_CUR && origin != SEEK_SET) {
retval = fuse_update_attributes(inode, NULL, file, NULL);
if (retval)
goto exit;