diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-04-14 13:12:07 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-04-14 13:12:07 -0400 |
| commit | e9de427e403f2670a44b5795707d8a240fb018c2 (patch) | |
| tree | 2455a30ed360995a22e741d9ca87bc213c2f7d2d | |
| parent | 9fc0178caa30070f65bded433f91756491a3cf26 (diff) | |
| parent | 3121bfe7631126d1b13064855ac2cfa164381bb0 (diff) | |
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse:
fuse: fix "direct_io" private mmap
fuse: fix argument type in fuse_get_user_pages()
| -rw-r--r-- | fs/fuse/file.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/fs/fuse/file.c b/fs/fuse/file.c index 2b25133524a3..06f30e965676 100644 --- a/fs/fuse/file.c +++ b/fs/fuse/file.c | |||
| @@ -938,9 +938,9 @@ static void fuse_release_user_pages(struct fuse_req *req, int write) | |||
| 938 | } | 938 | } |
| 939 | 939 | ||
| 940 | static int fuse_get_user_pages(struct fuse_req *req, const char __user *buf, | 940 | static int fuse_get_user_pages(struct fuse_req *req, const char __user *buf, |
| 941 | unsigned *nbytesp, int write) | 941 | size_t *nbytesp, int write) |
| 942 | { | 942 | { |
| 943 | unsigned nbytes = *nbytesp; | 943 | size_t nbytes = *nbytesp; |
| 944 | unsigned long user_addr = (unsigned long) buf; | 944 | unsigned long user_addr = (unsigned long) buf; |
| 945 | unsigned offset = user_addr & ~PAGE_MASK; | 945 | unsigned offset = user_addr & ~PAGE_MASK; |
| 946 | int npages; | 946 | int npages; |
| @@ -955,7 +955,7 @@ static int fuse_get_user_pages(struct fuse_req *req, const char __user *buf, | |||
| 955 | return 0; | 955 | return 0; |
| 956 | } | 956 | } |
| 957 | 957 | ||
| 958 | nbytes = min(nbytes, (unsigned) FUSE_MAX_PAGES_PER_REQ << PAGE_SHIFT); | 958 | nbytes = min_t(size_t, nbytes, FUSE_MAX_PAGES_PER_REQ << PAGE_SHIFT); |
| 959 | npages = (nbytes + offset + PAGE_SIZE - 1) >> PAGE_SHIFT; | 959 | npages = (nbytes + offset + PAGE_SIZE - 1) >> PAGE_SHIFT; |
| 960 | npages = clamp(npages, 1, FUSE_MAX_PAGES_PER_REQ); | 960 | npages = clamp(npages, 1, FUSE_MAX_PAGES_PER_REQ); |
| 961 | down_read(¤t->mm->mmap_sem); | 961 | down_read(¤t->mm->mmap_sem); |
| @@ -1298,6 +1298,8 @@ static int fuse_direct_mmap(struct file *file, struct vm_area_struct *vma) | |||
| 1298 | if (vma->vm_flags & VM_MAYSHARE) | 1298 | if (vma->vm_flags & VM_MAYSHARE) |
| 1299 | return -ENODEV; | 1299 | return -ENODEV; |
| 1300 | 1300 | ||
| 1301 | invalidate_inode_pages2(file->f_mapping); | ||
| 1302 | |||
| 1301 | return generic_file_mmap(file, vma); | 1303 | return generic_file_mmap(file, vma); |
| 1302 | } | 1304 | } |
| 1303 | 1305 | ||
