aboutsummaryrefslogtreecommitdiffstats
path: root/fs/fuse/file.c
diff options
context:
space:
mode:
authorMiklos Szeredi <mszeredi@suse.cz>2010-12-07 14:16:56 -0500
committerMiklos Szeredi <mszeredi@suse.cz>2010-12-07 14:16:56 -0500
commit8ac835056ca39b242d98332f46e4d65428a8b7db (patch)
treec35c2644c9bfce1dcf1b5298b00c03bd1c8d2f9a /fs/fuse/file.c
parent7572777eef78ebdee1ecb7c258c0ef94d35bad16 (diff)
fuse: ioctl cleanup
Get rid of unnecessary page_address()-es. Signed-off-by: Miklos Szeredi <mszeredi@suse.cz> CC: Tejun Heo <tj@kernel.org>
Diffstat (limited to 'fs/fuse/file.c')
-rw-r--r--fs/fuse/file.c15
1 files changed, 7 insertions, 8 deletions
diff --git a/fs/fuse/file.c b/fs/fuse/file.c
index 8b984a2cebbd..ca3b6bbb3790 100644
--- a/fs/fuse/file.c
+++ b/fs/fuse/file.c
@@ -1740,7 +1740,7 @@ long fuse_do_ioctl(struct file *file, unsigned int cmd, unsigned long arg,
1740 struct fuse_ioctl_out outarg; 1740 struct fuse_ioctl_out outarg;
1741 struct fuse_req *req = NULL; 1741 struct fuse_req *req = NULL;
1742 struct page **pages = NULL; 1742 struct page **pages = NULL;
1743 struct page *iov_page = NULL; 1743 struct iovec *iov_page = NULL;
1744 struct iovec *in_iov = NULL, *out_iov = NULL; 1744 struct iovec *in_iov = NULL, *out_iov = NULL;
1745 unsigned int in_iovs = 0, out_iovs = 0, num_pages = 0, max_pages; 1745 unsigned int in_iovs = 0, out_iovs = 0, num_pages = 0, max_pages;
1746 size_t in_size, out_size, transferred; 1746 size_t in_size, out_size, transferred;
@@ -1751,7 +1751,7 @@ long fuse_do_ioctl(struct file *file, unsigned int cmd, unsigned long arg,
1751 1751
1752 err = -ENOMEM; 1752 err = -ENOMEM;
1753 pages = kzalloc(sizeof(pages[0]) * FUSE_MAX_PAGES_PER_REQ, GFP_KERNEL); 1753 pages = kzalloc(sizeof(pages[0]) * FUSE_MAX_PAGES_PER_REQ, GFP_KERNEL);
1754 iov_page = alloc_page(GFP_KERNEL); 1754 iov_page = (struct iovec *) __get_free_page(GFP_KERNEL);
1755 if (!pages || !iov_page) 1755 if (!pages || !iov_page)
1756 goto out; 1756 goto out;
1757 1757
@@ -1760,7 +1760,7 @@ long fuse_do_ioctl(struct file *file, unsigned int cmd, unsigned long arg,
1760 * RETRY from server is not allowed. 1760 * RETRY from server is not allowed.
1761 */ 1761 */
1762 if (!(flags & FUSE_IOCTL_UNRESTRICTED)) { 1762 if (!(flags & FUSE_IOCTL_UNRESTRICTED)) {
1763 struct iovec *iov = page_address(iov_page); 1763 struct iovec *iov = iov_page;
1764 1764
1765 iov->iov_base = (void __user *)arg; 1765 iov->iov_base = (void __user *)arg;
1766 iov->iov_len = _IOC_SIZE(cmd); 1766 iov->iov_len = _IOC_SIZE(cmd);
@@ -1841,7 +1841,7 @@ long fuse_do_ioctl(struct file *file, unsigned int cmd, unsigned long arg,
1841 1841
1842 /* did it ask for retry? */ 1842 /* did it ask for retry? */
1843 if (outarg.flags & FUSE_IOCTL_RETRY) { 1843 if (outarg.flags & FUSE_IOCTL_RETRY) {
1844 char *vaddr; 1844 void *vaddr;
1845 1845
1846 /* no retry if in restricted mode */ 1846 /* no retry if in restricted mode */
1847 err = -EIO; 1847 err = -EIO;
@@ -1862,14 +1862,14 @@ long fuse_do_ioctl(struct file *file, unsigned int cmd, unsigned long arg,
1862 goto out; 1862 goto out;
1863 1863
1864 vaddr = kmap_atomic(pages[0], KM_USER0); 1864 vaddr = kmap_atomic(pages[0], KM_USER0);
1865 err = fuse_copy_ioctl_iovec(page_address(iov_page), vaddr, 1865 err = fuse_copy_ioctl_iovec(iov_page, vaddr,
1866 transferred, in_iovs + out_iovs, 1866 transferred, in_iovs + out_iovs,
1867 (flags & FUSE_IOCTL_COMPAT) != 0); 1867 (flags & FUSE_IOCTL_COMPAT) != 0);
1868 kunmap_atomic(vaddr, KM_USER0); 1868 kunmap_atomic(vaddr, KM_USER0);
1869 if (err) 1869 if (err)
1870 goto out; 1870 goto out;
1871 1871
1872 in_iov = page_address(iov_page); 1872 in_iov = iov_page;
1873 out_iov = in_iov + in_iovs; 1873 out_iov = in_iov + in_iovs;
1874 1874
1875 err = fuse_verify_ioctl_iov(in_iov, in_iovs); 1875 err = fuse_verify_ioctl_iov(in_iov, in_iovs);
@@ -1891,8 +1891,7 @@ long fuse_do_ioctl(struct file *file, unsigned int cmd, unsigned long arg,
1891 out: 1891 out:
1892 if (req) 1892 if (req)
1893 fuse_put_request(fc, req); 1893 fuse_put_request(fc, req);
1894 if (iov_page) 1894 free_page((unsigned long) iov_page);
1895 __free_page(iov_page);
1896 while (num_pages) 1895 while (num_pages)
1897 __free_page(pages[--num_pages]); 1896 __free_page(pages[--num_pages]);
1898 kfree(pages); 1897 kfree(pages);