diff options
author | Miklos Szeredi <miklos@szeredi.hu> | 2004-12-07 20:13:47 +0000 |
---|---|---|
committer | Miklos Szeredi <miklos@szeredi.hu> | 2004-12-07 20:13:47 +0000 |
commit | c45d1a66b86c3e274113fdf30ab39ad2c2a69179 (patch) | |
tree | 8792df83a95011d538e7c61695d82114aa9d510e /kernel/file.c | |
parent | 31d5119338b9284ba5d3759f97572d5a81602ec5 (diff) |
protect get_user_pages with mmap_sem
Diffstat (limited to 'kernel/file.c')
-rw-r--r-- | kernel/file.c | 2 |
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(¤t->mm->mmap_sem); npages = get_user_pages(current, current->mm, user_addr, npages, write, 0, req->pages, NULL); + up_read(¤t->mm->mmap_sem); if (npages < 0) return npages; |