diff options
Diffstat (limited to 'fs/fuse/dev.c')
| -rw-r--r-- | fs/fuse/dev.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/fs/fuse/dev.c b/fs/fuse/dev.c index a5e516a40e7a..809c0f2f9942 100644 --- a/fs/fuse/dev.c +++ b/fs/fuse/dev.c | |||
| @@ -1742,7 +1742,6 @@ static int fuse_retrieve(struct fuse_conn *fc, struct inode *inode, | |||
| 1742 | req->in.h.nodeid = outarg->nodeid; | 1742 | req->in.h.nodeid = outarg->nodeid; |
| 1743 | req->in.numargs = 2; | 1743 | req->in.numargs = 2; |
| 1744 | req->in.argpages = 1; | 1744 | req->in.argpages = 1; |
| 1745 | req->page_descs[0].offset = offset; | ||
| 1746 | req->end = fuse_retrieve_end; | 1745 | req->end = fuse_retrieve_end; |
| 1747 | 1746 | ||
| 1748 | index = outarg->offset >> PAGE_SHIFT; | 1747 | index = outarg->offset >> PAGE_SHIFT; |
| @@ -1757,6 +1756,7 @@ static int fuse_retrieve(struct fuse_conn *fc, struct inode *inode, | |||
| 1757 | 1756 | ||
| 1758 | this_num = min_t(unsigned, num, PAGE_SIZE - offset); | 1757 | this_num = min_t(unsigned, num, PAGE_SIZE - offset); |
| 1759 | req->pages[req->num_pages] = page; | 1758 | req->pages[req->num_pages] = page; |
| 1759 | req->page_descs[req->num_pages].offset = offset; | ||
| 1760 | req->page_descs[req->num_pages].length = this_num; | 1760 | req->page_descs[req->num_pages].length = this_num; |
| 1761 | req->num_pages++; | 1761 | req->num_pages++; |
| 1762 | 1762 | ||
| @@ -2077,8 +2077,10 @@ static ssize_t fuse_dev_splice_write(struct pipe_inode_info *pipe, | |||
| 2077 | 2077 | ||
| 2078 | ret = fuse_dev_do_write(fud, &cs, len); | 2078 | ret = fuse_dev_do_write(fud, &cs, len); |
| 2079 | 2079 | ||
| 2080 | pipe_lock(pipe); | ||
| 2080 | for (idx = 0; idx < nbuf; idx++) | 2081 | for (idx = 0; idx < nbuf; idx++) |
| 2081 | pipe_buf_release(pipe, &bufs[idx]); | 2082 | pipe_buf_release(pipe, &bufs[idx]); |
| 2083 | pipe_unlock(pipe); | ||
| 2082 | 2084 | ||
| 2083 | out: | 2085 | out: |
| 2084 | kvfree(bufs); | 2086 | kvfree(bufs); |
