diff options
Diffstat (limited to 'fs/fuse/inode.c')
| -rw-r--r-- | fs/fuse/inode.c | 12 | 
1 files changed, 7 insertions, 5 deletions
diff --git a/fs/fuse/inode.c b/fs/fuse/inode.c index ce0a2838ccd..fca222dabe3 100644 --- a/fs/fuse/inode.c +++ b/fs/fuse/inode.c @@ -367,11 +367,6 @@ void fuse_conn_kill(struct fuse_conn *fc)  	wake_up_all(&fc->waitq);  	wake_up_all(&fc->blocked_waitq);  	wake_up_all(&fc->reserved_req_waitq); -	mutex_lock(&fuse_mutex); -	list_del(&fc->entry); -	fuse_ctl_remove_conn(fc); -	mutex_unlock(&fuse_mutex); -	fuse_bdi_destroy(fc);  }  EXPORT_SYMBOL_GPL(fuse_conn_kill); @@ -380,7 +375,14 @@ static void fuse_put_super(struct super_block *sb)  	struct fuse_conn *fc = get_fuse_conn_super(sb);  	fuse_send_destroy(fc); +  	fuse_conn_kill(fc); +	mutex_lock(&fuse_mutex); +	list_del(&fc->entry); +	fuse_ctl_remove_conn(fc); +	mutex_unlock(&fuse_mutex); +	fuse_bdi_destroy(fc); +  	fuse_conn_put(fc);  }  |