If mount_fuse_export() fails to mount the session, destroy it. Depending on the allow_other configuration, fuse_export_create() may retry this function on error, which may leak one session instance otherwise.
Signed-off-by: Hanna Czenczek <[email protected]> --- block/export/fuse.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/block/export/fuse.c b/block/export/fuse.c index 00bb2ffee4..82560ca071 100644 --- a/block/export/fuse.c +++ b/block/export/fuse.c @@ -270,11 +270,17 @@ static int mount_fuse_export(FuseExport *exp, Error **errp) ret = fuse_session_mount(exp->fuse_session, exp->mountpoint); if (ret < 0) { error_setg(errp, "Failed to mount FUSE session to export"); - return -EIO; + ret = -EIO; + goto fail; } exp->mounted = true; return 0; + +fail: + fuse_session_destroy(exp->fuse_session); + exp->fuse_session = NULL; + return ret; } /** -- 2.53.0
