| From 3b1058e79edc1233f31ad3b16bb4984699a35f29 Mon Sep 17 00:00:00 2001 |
| From: zhengbin <zhengbin13@huawei.com> |
| Date: Wed, 14 Aug 2019 15:59:09 +0800 |
| Subject: [PATCH] fuse: fix memleak in cuse_channel_open |
| |
| commit 9ad09b1976c562061636ff1e01bfc3a57aebe56b upstream. |
| |
| If cuse_send_init fails, need to fuse_conn_put cc->fc. |
| |
| cuse_channel_open->fuse_conn_init->refcount_set(&fc->count, 1) |
| ->fuse_dev_alloc->fuse_conn_get |
| ->fuse_dev_free->fuse_conn_put |
| |
| Fixes: cc080e9e9be1 ("fuse: introduce per-instance fuse_dev structure") |
| Reported-by: Hulk Robot <hulkci@huawei.com> |
| Signed-off-by: zhengbin <zhengbin13@huawei.com> |
| Signed-off-by: Miklos Szeredi <mszeredi@redhat.com> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/fs/fuse/cuse.c b/fs/fuse/cuse.c |
| index bab7a0db81dd..f3b720884650 100644 |
| --- a/fs/fuse/cuse.c |
| +++ b/fs/fuse/cuse.c |
| @@ -519,6 +519,7 @@ static int cuse_channel_open(struct inode *inode, struct file *file) |
| rc = cuse_send_init(cc); |
| if (rc) { |
| fuse_dev_free(fud); |
| + fuse_conn_put(&cc->fc); |
| return rc; |
| } |
| file->private_data = fud; |
| -- |
| 2.7.4 |
| |