From: Miklos Szeredi <mszeredi@suse.cz>
Date: Thu, 9 Apr 2009 15:37:53 +0000 (+0200)
Subject: fuse: fix "direct_io" private mmap
X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=3121bfe76311;p=linux.git

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>
---

diff --git a/fs/fuse/file.c b/fs/fuse/file.c
index 0946861b10b7e..06f30e965676e 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);
 }