|
@@ -136,8 +136,6 @@ error:
|
|
|
|
|
|
const struct pipe_buf_operations page_cache_pipe_buf_ops = {
|
|
|
.can_merge = 0,
|
|
|
- .map = generic_pipe_buf_map,
|
|
|
- .unmap = generic_pipe_buf_unmap,
|
|
|
.confirm = page_cache_pipe_buf_confirm,
|
|
|
.release = page_cache_pipe_buf_release,
|
|
|
.steal = page_cache_pipe_buf_steal,
|
|
@@ -156,8 +154,6 @@ static int user_page_pipe_buf_steal(struct pipe_inode_info *pipe,
|
|
|
|
|
|
static const struct pipe_buf_operations user_page_pipe_buf_ops = {
|
|
|
.can_merge = 0,
|
|
|
- .map = generic_pipe_buf_map,
|
|
|
- .unmap = generic_pipe_buf_unmap,
|
|
|
.confirm = generic_pipe_buf_confirm,
|
|
|
.release = page_cache_pipe_buf_release,
|
|
|
.steal = user_page_pipe_buf_steal,
|
|
@@ -547,8 +543,6 @@ EXPORT_SYMBOL(generic_file_splice_read);
|
|
|
|
|
|
static const struct pipe_buf_operations default_pipe_buf_ops = {
|
|
|
.can_merge = 0,
|
|
|
- .map = generic_pipe_buf_map,
|
|
|
- .unmap = generic_pipe_buf_unmap,
|
|
|
.confirm = generic_pipe_buf_confirm,
|
|
|
.release = generic_pipe_buf_release,
|
|
|
.steal = generic_pipe_buf_steal,
|
|
@@ -564,8 +558,6 @@ static int generic_pipe_buf_nosteal(struct pipe_inode_info *pipe,
|
|
|
/* Pipe buffer operations for a socket and similar. */
|
|
|
const struct pipe_buf_operations nosteal_pipe_buf_ops = {
|
|
|
.can_merge = 0,
|
|
|
- .map = generic_pipe_buf_map,
|
|
|
- .unmap = generic_pipe_buf_unmap,
|
|
|
.confirm = generic_pipe_buf_confirm,
|
|
|
.release = generic_pipe_buf_release,
|
|
|
.steal = generic_pipe_buf_nosteal,
|
|
@@ -767,13 +759,13 @@ int pipe_to_file(struct pipe_inode_info *pipe, struct pipe_buffer *buf,
|
|
|
goto out;
|
|
|
|
|
|
if (buf->page != page) {
|
|
|
- char *src = buf->ops->map(pipe, buf, 1);
|
|
|
+ char *src = kmap_atomic(buf->page);
|
|
|
char *dst = kmap_atomic(page);
|
|
|
|
|
|
memcpy(dst + offset, src + buf->offset, this_len);
|
|
|
flush_dcache_page(page);
|
|
|
kunmap_atomic(dst);
|
|
|
- buf->ops->unmap(pipe, buf, src);
|
|
|
+ kunmap_atomic(src);
|
|
|
}
|
|
|
ret = pagecache_write_end(file, mapping, sd->pos, this_len, this_len,
|
|
|
page, fsdata);
|
|
@@ -1067,9 +1059,9 @@ static int write_pipe_buf(struct pipe_inode_info *pipe, struct pipe_buffer *buf,
|
|
|
void *data;
|
|
|
loff_t tmp = sd->pos;
|
|
|
|
|
|
- data = buf->ops->map(pipe, buf, 0);
|
|
|
+ data = kmap(buf->page);
|
|
|
ret = __kernel_write(sd->u.file, data + buf->offset, sd->len, &tmp);
|
|
|
- buf->ops->unmap(pipe, buf, data);
|
|
|
+ kunmap(buf->page);
|
|
|
|
|
|
return ret;
|
|
|
}
|
|
@@ -1536,10 +1528,10 @@ static int pipe_to_user(struct pipe_inode_info *pipe, struct pipe_buffer *buf,
|
|
|
* pages and doing an atomic copy
|
|
|
*/
|
|
|
if (!fault_in_pages_writeable(sd->u.userptr, sd->len)) {
|
|
|
- src = buf->ops->map(pipe, buf, 1);
|
|
|
+ src = kmap_atomic(buf->page);
|
|
|
ret = __copy_to_user_inatomic(sd->u.userptr, src + buf->offset,
|
|
|
sd->len);
|
|
|
- buf->ops->unmap(pipe, buf, src);
|
|
|
+ kunmap_atomic(src);
|
|
|
if (!ret) {
|
|
|
ret = sd->len;
|
|
|
goto out;
|
|
@@ -1549,13 +1541,13 @@ static int pipe_to_user(struct pipe_inode_info *pipe, struct pipe_buffer *buf,
|
|
|
/*
|
|
|
* No dice, use slow non-atomic map and copy
|
|
|
*/
|
|
|
- src = buf->ops->map(pipe, buf, 0);
|
|
|
+ src = kmap(buf->page);
|
|
|
|
|
|
ret = sd->len;
|
|
|
if (copy_to_user(sd->u.userptr, src + buf->offset, sd->len))
|
|
|
ret = -EFAULT;
|
|
|
|
|
|
- buf->ops->unmap(pipe, buf, src);
|
|
|
+ kunmap(buf->page);
|
|
|
out:
|
|
|
if (ret > 0)
|
|
|
sd->u.userptr += ret;
|