On Tue, 2011-09-13 at 10:18 +0000, Mike Ashton wrote: > Package: linux-2.6 > Version: 2.6.32-35squeeze2 > Severity: important > > > In the squeeze standard 64 bit kernel (with either 64 or 32 bit > userspace) sendfile(2) is overwriting data already written to the file > descriptor by write(2). Here's a minimal test case: [...]
Please can you test whether the attached patch fixes this. Instructions for rebuilding the kernel are at <http://kernel-handbook.alioth.debian.org/ch-common-tasks.html#s-common-official>. Ben. -- Ben Hutchings To err is human; to really foul things up requires a computer.
From: Changli Gao <xiao...@gmail.com> Date: Tue, 29 Jun 2010 13:09:18 +0200 Subject: [PATCH] splice: direct_splice_actor() should not use pos in sd commit 2cb4b05e7647891b46b91c07c9a60304803d1688 upstream. direct_splice_actor() shouldn't use sd->pos, as sd->pos is for file reading, file->f_pos should be used instead. Signed-off-by: Changli Gao <xiao...@gmail.com> Signed-off-by: Miklos Szeredi <mszer...@suse.cz> ---- fs/splice.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) Signed-off-by: Jens Axboe <jax...@fusionio.com> --- fs/splice.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) diff --git a/fs/splice.c b/fs/splice.c index 740e6b9..4190049 100644 --- a/fs/splice.c +++ b/fs/splice.c @@ -1282,7 +1282,8 @@ static int direct_splice_actor(struct pipe_inode_info *pipe, { struct file *file = sd->u.file; - return do_splice_from(pipe, file, &sd->pos, sd->total_len, sd->flags); + return do_splice_from(pipe, file, &file->f_pos, sd->total_len, + sd->flags); } /** -- 1.7.5.4
signature.asc
Description: This is a digitally signed message part