diff options
Diffstat (limited to 'fs/fuse')
-rw-r--r-- | fs/fuse/dev.c | 22 |
1 files changed, 5 insertions, 17 deletions
diff --git a/fs/fuse/dev.c b/fs/fuse/dev.c index ef74ad5fd362..fa8cb4b7b8fe 100644 --- a/fs/fuse/dev.c +++ b/fs/fuse/dev.c | |||
@@ -1296,22 +1296,6 @@ static ssize_t fuse_dev_read(struct kiocb *iocb, const struct iovec *iov, | |||
1296 | return fuse_dev_do_read(fc, file, &cs, iov_length(iov, nr_segs)); | 1296 | return fuse_dev_do_read(fc, file, &cs, iov_length(iov, nr_segs)); |
1297 | } | 1297 | } |
1298 | 1298 | ||
1299 | static int fuse_dev_pipe_buf_steal(struct pipe_inode_info *pipe, | ||
1300 | struct pipe_buffer *buf) | ||
1301 | { | ||
1302 | return 1; | ||
1303 | } | ||
1304 | |||
1305 | static const struct pipe_buf_operations fuse_dev_pipe_buf_ops = { | ||
1306 | .can_merge = 0, | ||
1307 | .map = generic_pipe_buf_map, | ||
1308 | .unmap = generic_pipe_buf_unmap, | ||
1309 | .confirm = generic_pipe_buf_confirm, | ||
1310 | .release = generic_pipe_buf_release, | ||
1311 | .steal = fuse_dev_pipe_buf_steal, | ||
1312 | .get = generic_pipe_buf_get, | ||
1313 | }; | ||
1314 | |||
1315 | static ssize_t fuse_dev_splice_read(struct file *in, loff_t *ppos, | 1299 | static ssize_t fuse_dev_splice_read(struct file *in, loff_t *ppos, |
1316 | struct pipe_inode_info *pipe, | 1300 | struct pipe_inode_info *pipe, |
1317 | size_t len, unsigned int flags) | 1301 | size_t len, unsigned int flags) |
@@ -1358,7 +1342,11 @@ static ssize_t fuse_dev_splice_read(struct file *in, loff_t *ppos, | |||
1358 | buf->page = bufs[page_nr].page; | 1342 | buf->page = bufs[page_nr].page; |
1359 | buf->offset = bufs[page_nr].offset; | 1343 | buf->offset = bufs[page_nr].offset; |
1360 | buf->len = bufs[page_nr].len; | 1344 | buf->len = bufs[page_nr].len; |
1361 | buf->ops = &fuse_dev_pipe_buf_ops; | 1345 | /* |
1346 | * Need to be careful about this. Having buf->ops in module | ||
1347 | * code can Oops if the buffer persists after module unload. | ||
1348 | */ | ||
1349 | buf->ops = &nosteal_pipe_buf_ops; | ||
1362 | 1350 | ||
1363 | pipe->nrbufs++; | 1351 | pipe->nrbufs++; |
1364 | page_nr++; | 1352 | page_nr++; |