Skip to content

Commit

Permalink
[PATCH] vmsplice: restrict stealing a little more
Browse files Browse the repository at this point in the history
Apply the same rules as the anon pipe pages, only allow stealing
if no one else is using the page.

Signed-off-by: Jens Axboe <axboe@suse.de>
  • Loading branch information
Jens Axboe committed May 2, 2006
1 parent a893b99 commit 330ab71
Show file tree
Hide file tree
Showing 3 changed files with 5 additions and 4 deletions.
6 changes: 3 additions & 3 deletions fs/pipe.c
Original file line number Diff line number Diff line change
Expand Up @@ -184,8 +184,8 @@ void generic_pipe_buf_unmap(struct pipe_inode_info *pipe,
kunmap(buf->page);
}

static int anon_pipe_buf_steal(struct pipe_inode_info *pipe,
struct pipe_buffer *buf)
int generic_pipe_buf_steal(struct pipe_inode_info *pipe,
struct pipe_buffer *buf)
{
struct page *page = buf->page;

Expand Down Expand Up @@ -213,7 +213,7 @@ static struct pipe_buf_operations anon_pipe_buf_ops = {
.unmap = generic_pipe_buf_unmap,
.pin = generic_pipe_buf_pin,
.release = anon_pipe_buf_release,
.steal = anon_pipe_buf_steal,
.steal = generic_pipe_buf_steal,
.get = generic_pipe_buf_get,
};

Expand Down
2 changes: 1 addition & 1 deletion fs/splice.c
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ static int user_page_pipe_buf_steal(struct pipe_inode_info *pipe,
if (!(buf->flags & PIPE_BUF_FLAG_GIFT))
return 1;

return 0;
return generic_pipe_buf_steal(pipe, buf);
}

static struct pipe_buf_operations user_page_pipe_buf_ops = {
Expand Down
1 change: 1 addition & 0 deletions include/linux/pipe_fs_i.h
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ void *generic_pipe_buf_map(struct pipe_inode_info *, struct pipe_buffer *, int);
void generic_pipe_buf_unmap(struct pipe_inode_info *, struct pipe_buffer *, void *);
void generic_pipe_buf_get(struct pipe_inode_info *, struct pipe_buffer *);
int generic_pipe_buf_pin(struct pipe_inode_info *, struct pipe_buffer *);
int generic_pipe_buf_steal(struct pipe_inode_info *, struct pipe_buffer *);

/*
* splice is tied to pipes as a transport (at least for now), so we'll just
Expand Down

0 comments on commit 330ab71

Please sign in to comment.