From: Miklos Szeredi <miklos@szeredi.hu>

This patch fixes a potential race between request_wait_answer() calling
background_request() and fuse_dev_writev() calling request_end() if a
request is interrupted.  The race could cause inodes and files to acquire
an extra reference, making them unfreeable.

Signed-off-by: Miklos Szeredi <miklos@szeredi.hu>
Signed-off-by: Andrew Morton <akpm@osdl.org>
---

 25-akpm/fs/fuse/dev.c |    2 +-
 1 files changed, 1 insertion(+), 1 deletion(-)

diff -puN fs/fuse/dev.c~fuse-device-functions-fix-race-in-interrupted-request fs/fuse/dev.c
--- 25/fs/fuse/dev.c~fuse-device-functions-fix-race-in-interrupted-request	2005-02-02 18:30:38.204286176 -0800
+++ 25-akpm/fs/fuse/dev.c	2005-02-02 18:30:38.208285568 -0800
@@ -233,7 +233,7 @@ static void request_wait_answer(struct f
 	if (!req->sent && !list_empty(&req->list)) {
 		list_del(&req->list);
 		__fuse_put_request(req);
-	} else if (req->sent)
+	} else if (!req->finished && req->sent)
 		background_request(req);
 }
 
_