summaryrefslogtreecommitdiffstats
path: root/fs/fuse
diff options
context:
space:
mode:
authorMiklos Szeredi <mszeredi@suse.cz>2009-04-09 17:37:53 +0200
committerMiklos Szeredi <mszeredi@suse.cz>2009-04-09 17:37:53 +0200
commit3121bfe7631126d1b13064855ac2cfa164381bb0 (patch)
tree18cb4b7eba9783682df5d8c2799f87cbe55ca610 /fs/fuse
parentce60a2f15764f296b0467960759351702c7d2986 (diff)
downloadlinux-3121bfe7631126d1b13064855ac2cfa164381bb0.tar.gz
linux-3121bfe7631126d1b13064855ac2cfa164381bb0.tar.bz2
linux-3121bfe7631126d1b13064855ac2cfa164381bb0.zip
fuse: fix "direct_io" private mmap
MAP_PRIVATE mmap could return stale data from the cache for "direct_io" files. Fix this by flushing the cache on mmap. Found with a slightly modified fsx-linux. Signed-off-by: Miklos Szeredi <mszeredi@suse.cz>
Diffstat (limited to 'fs/fuse')
-rw-r--r--fs/fuse/file.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/fs/fuse/file.c b/fs/fuse/file.c
index 0946861b10b7..06f30e965676 100644
--- a/fs/fuse/file.c
+++ b/fs/fuse/file.c
@@ -1298,6 +1298,8 @@ static int fuse_direct_mmap(struct file *file, struct vm_area_struct *vma)
if (vma->vm_flags & VM_MAYSHARE)
return -ENODEV;
+ invalidate_inode_pages2(file->f_mapping);
+
return generic_file_mmap(file, vma);
}