[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 <axboe@suse.de>
diff --git a/fs/splice.c b/fs/splice.c
index 6081cf7..a555d0a 100644
--- a/fs/splice.c
+++ b/fs/splice.c
@@ -237,9 +237,9 @@
* 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