From: Miklos Szeredi 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 Signed-off-by: Andrew Morton --- 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); } _