From bd1a68b59c8e3bce45fb76632c64e1e063c3962d Mon Sep 17 00:00:00 2001 From: Eric Dumazet Date: Wed, 4 Apr 2012 11:08:51 +0200 Subject: [PATCH] vmsplice: relax alignement requirements for SPLICE_F_GIFT It seems there is no fundamental reason to limit vmsplice() SPLICE_F_GIFT to page aligned chunks. All helpers are prepared to cope with offsets in page. This limitation makes vmsplice() API very impractical in the zero-copy land. Signed-off-by: Eric Dumazet Cc: Tom Herbert Cc: Jens Axboe Cc: Andrew Morton Cc: David Miller Cc: Al Viro Cc: Hugh Dickins Cc: Changli Gao Cc: Miklos Szeredi Signed-off-by: Jens Axboe --- fs/splice.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fs/splice.c b/fs/splice.c index 5f883de7ef3a..5417aa320dc7 100644 --- a/fs/splice.c +++ b/fs/splice.c @@ -1385,7 +1385,7 @@ static long do_splice(struct file *in, loff_t __user *off_in, */ static int get_iovec_page_array(const struct iovec __user *iov, unsigned int nr_vecs, struct page **pages, - struct partial_page *partial, int aligned, + struct partial_page *partial, bool aligned, unsigned int pipe_buffers) { int buffers = 0, error = 0; @@ -1623,7 +1623,7 @@ static long vmsplice_to_pipe(struct file *file, const struct iovec __user *iov, return -ENOMEM; spd.nr_pages = get_iovec_page_array(iov, nr_segs, spd.pages, - spd.partial, flags & SPLICE_F_GIFT, + spd.partial, false, pipe->buffers); if (spd.nr_pages <= 0) ret = spd.nr_pages; -- 2.30.2