summaryrefslogtreecommitdiffstats
path: root/fs/splice.c
diff options
context:
space:
mode:
authorJens Axboe <axboe@suse.de>2006-04-02 23:04:21 +0200
committerJens Axboe <axboe@suse.de>2006-04-02 23:04:21 +0200
commit53cd9ae886273d6c2b8ba4aa63d6cd6b1217b57f (patch)
tree859162c3086f7d636ed376d4cb57522f52a8fd82 /fs/splice.c
parentb043b673dc8a73daa233d5d92cf70b32e7351314 (diff)
downloadlinux-stable-53cd9ae886273d6c2b8ba4aa63d6cd6b1217b57f.tar.gz
linux-stable-53cd9ae886273d6c2b8ba4aa63d6cd6b1217b57f.tar.bz2
linux-stable-53cd9ae886273d6c2b8ba4aa63d6cd6b1217b57f.zip
[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>
Diffstat (limited to 'fs/splice.c')
-rw-r--r--fs/splice.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/fs/splice.c b/fs/splice.c
index 6081cf7d2d1b..a555d0a83fe9 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