[PATCH v2 4/4] splice: fix updating sd->pos wrongly

Changli Gao
2010-05-26T14:45:34Z

fix updating sd->pos wrongly.

In error path, we don't need to updating sd->pos, if the file isn't seekable.

Signed-off-by: Changli Gao <xiaosuo@gmail.com>
----
fs/splice.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/fs/splice.c b/fs/splice.c
index 57172ca..c69b241 100644
--- a/fs/splice.c
+++ b/fs/splice.c
@@ -1185,7 +1185,8 @@ ssize_t splice_direct_to_actor(struct file *in, struct splice_desc *sd,
sd->pos = pos;

if (ret < read_len) {
- sd->pos = prev_pos + ret;
+ if (sd->pos)
+ sd->pos = prev_pos + ret;
goto out_release;
}
}