[PATCH] splice: fix shadow[] filling logic
authorJens Axboe <axboe@suse.de>
Sun, 2 Apr 2006 21:04:21 +0000 (23:04 +0200)
committerJens Axboe <axboe@suse.de>
Sun, 2 Apr 2006 21:04:21 +0000 (23:04 +0200)
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>
fs/splice.c

index 6081cf7..a555d0a 100644 (file)
@@ -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