summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiklos Szeredi <miklos@szeredi.hu>2004-12-07 20:13:47 +0000
committerMiklos Szeredi <miklos@szeredi.hu>2004-12-07 20:13:47 +0000
commitc45d1a66b86c3e274113fdf30ab39ad2c2a69179 (patch)
tree8792df83a95011d538e7c61695d82114aa9d510e
parent31d5119338b9284ba5d3759f97572d5a81602ec5 (diff)
downloadfuse-c45d1a66b86c3e274113fdf30ab39ad2c2a69179.tar.gz
protect get_user_pages with mmap_sembefore_interruptible
-rw-r--r--kernel/file.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/kernel/file.c b/kernel/file.c
index 11a7ee8..738f1f0 100644
--- a/kernel/file.c
+++ b/kernel/file.c
@@ -658,8 +658,10 @@ static int fuse_get_user_pages(struct fuse_req *req, const char __user *buf,
nbytes = min(nbytes, (unsigned) FUSE_MAX_PAGES_PER_REQ << PAGE_SHIFT);
npages = (nbytes + offset + PAGE_SIZE - 1) >> PAGE_SHIFT;
npages = min(npages, FUSE_MAX_PAGES_PER_REQ);
+ down_read(&current->mm->mmap_sem);
npages = get_user_pages(current, current->mm, user_addr, npages, write,
0, req->pages, NULL);
+ up_read(&current->mm->mmap_sem);
if (npages < 0)
return npages;