diff options
author | Miklos Szeredi <mszeredi@suse.cz> | 2009-04-02 14:25:34 +0200 |
---|---|---|
committer | Miklos Szeredi <mszeredi@suse.cz> | 2009-04-02 14:25:34 +0200 |
commit | f4975c67dd9ad8eb47a4c77af0521a2b16ee0197 (patch) | |
tree | 4d4642e04e40f4835df9a18192da53b98b206bf8 /fs/fuse/dir.c | |
parent | 833bb3046b6cb320e775ea2160ddca87d53260d5 (diff) | |
download | linux-f4975c67dd9ad8eb47a4c77af0521a2b16ee0197.tar.gz linux-f4975c67dd9ad8eb47a4c77af0521a2b16ee0197.tar.bz2 linux-f4975c67dd9ad8eb47a4c77af0521a2b16ee0197.zip |
fuse: allow kernel to access "direct_io" files
Allow the kernel read and write on "direct_io" files. This is
necessary for nfs export and execute support.
The implementation is simple: if an access from the kernel is
detected, don't perform get_user_pages(), just use the kernel address
provided by the requester to copy from/to the userspace filesystem.
Signed-off-by: Miklos Szeredi <mszeredi@suse.cz>
Diffstat (limited to 'fs/fuse/dir.c')
-rw-r--r-- | fs/fuse/dir.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/fs/fuse/dir.c b/fs/fuse/dir.c index 06da05261e04..8b8eebc5614b 100644 --- a/fs/fuse/dir.c +++ b/fs/fuse/dir.c @@ -1032,6 +1032,7 @@ static int fuse_readdir(struct file *file, void *dstbuf, filldir_t filldir) fuse_put_request(fc, req); return -ENOMEM; } + req->out.argpages = 1; req->num_pages = 1; req->pages[0] = page; fuse_read_fill(req, file, inode, file->f_pos, PAGE_SIZE, FUSE_READDIR); |