fuse_writepage_in_flight() returns false if it fails to find request with given index in fi->writepages. Then the caller proceeds with populating data->orig_pages[] and incrementing req->num_pages. Hence, fuse_writepage_in_flight() must revert changes it made in request before returning false. Signed-off-by: Maxim Patlasov <MPatlasov@xxxxxxxxxxxxx> --- fs/fuse/file.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/fs/fuse/file.c b/fs/fuse/file.c index 135360e..575e44f 100644 --- a/fs/fuse/file.c +++ b/fs/fuse/file.c @@ -1659,8 +1659,11 @@ static bool fuse_writepage_in_flight(struct fuse_req *new_req, break; } } - if (!found) + if (!found) { + new_req->num_pages = 0; + list_add(&new_req->writepages_entry, &fi->writepages); goto out_unlock; + } for (tmp = old_req; tmp != NULL; tmp = tmp->misc.write.next) { BUG_ON(tmp->inode != new_req->inode); -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html