From: Jens Axboe Date: Sun, 2 Apr 2006 21:04:21 +0000 (+0200) Subject: [PATCH] splice: fix shadow[] filling logic X-Git-Tag: v2.6.17-rc1~2^2~6 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=53cd9ae886273d6c2b8ba4aa63d6cd6b1217b57f;p=linux-2.6 [PATCH] splice: fix shadow[] filling logic Clear the entire range, and don't increment pidx or we keep filling the same position again and again. Thanks to KAMEZAWA Hiroyuki. Signed-off-by: Jens Axboe --- diff --git a/fs/splice.c b/fs/splice.c index 6081cf7d2d..a555d0a83f 100644 --- a/fs/splice.c +++ b/fs/splice.c @@ -237,9 +237,9 @@ static int __generic_file_splice_read(struct file *in, struct inode *pipe, * fill shadow[] with pages at the right locations, so we only * have to fill holes */ - memset(shadow, 0, i * sizeof(struct page *)); - for (j = 0, pidx = index; j < i; pidx++, j++) - shadow[pages[j]->index - pidx] = pages[j]; + memset(shadow, 0, nr_pages * sizeof(struct page *)); + for (j = 0; j < i; j++) + shadow[pages[j]->index - index] = pages[j]; /* * now fill in the holes