浏览代码

fuse: fix memleak in cuse_channel_open

[ Upstream commit 9ad09b1976c562061636ff1e01bfc3a57aebe56b ]

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: Sasha Levin <sashal@kernel.org>
zhengbin 6 年之前
父节点
当前提交
7b4f541fcd
共有 1 个文件被更改,包括 1 次插入0 次删除
  1. 1 0
      fs/fuse/cuse.c

+ 1 - 0
fs/fuse/cuse.c

@@ -518,6 +518,7 @@ static int cuse_channel_open(struct inode *inode, struct file *file)
 	rc = cuse_send_init(cc);
 	rc = cuse_send_init(cc);
 	if (rc) {
 	if (rc) {
 		fuse_dev_free(fud);
 		fuse_dev_free(fud);
+		fuse_conn_put(&cc->fc);
 		return rc;
 		return rc;
 	}
 	}
 	file->private_data = fud;
 	file->private_data = fud;