Signed-off-by: Pavel Hrdina <phrdina(a)redhat.com
---
src/qemu/qemu_process.c | 44 +++++++++++++++++++++++++-------------------
1 file changed, 25 insertions(+), 19 deletions(-)
diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
index 7481626..26aef5e 100644
--- a/src/qemu/qemu_process.c
+++ b/src/qemu/qemu_process.c
@@ -3545,14 +3545,15 @@ qemuProcessVNCAllocatePorts(virQEMUDriverPtr driver,
static int
qemuProcessSPICEAllocatePorts(virQEMUDriverPtr driver,
- virQEMUDriverConfigPtr cfg,
virDomainGraphicsDefPtr graphics,
bool allocate)
{
+ virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
unsigned short port = 0;
unsigned short tlsPort;
size_t i;
int defaultMode = graphics->data.spice.defaultMode;
+ int ret = -1;
bool needTLSPort = false;
bool needPort = false;
@@ -3598,12 +3599,13 @@ qemuProcessSPICEAllocatePorts(virQEMUDriverPtr driver,
if (needTLSPort || graphics->data.spice.tlsPort == -1)
graphics->data.spice.tlsPort = 5902;
- return 0;
+ ret = 0;
+ goto cleanup;
}
if (needPort || graphics->data.spice.port == -1) {
if (virPortAllocatorAcquire(driver->remotePorts, &port) < 0)
- goto error;
+ goto cleanup;
graphics->data.spice.port = port;
@@ -3616,11 +3618,11 @@ qemuProcessSPICEAllocatePorts(virQEMUDriverPtr driver,
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
_("Auto allocation of spice TLS port requested "
"but spice TLS is disabled in qemu.conf"));
- goto error;
+ goto cleanup;
}
if (virPortAllocatorAcquire(driver->remotePorts, &tlsPort) < 0)
- goto error;
+ goto cleanup;
graphics->data.spice.tlsPort = tlsPort;
@@ -3628,11 +3630,12 @@ qemuProcessSPICEAllocatePorts(virQEMUDriverPtr driver,
graphics->data.spice.tlsPortReserved = true;
}
- return 0;
+ ret = 0;
- error:
+ cleanup:
virPortAllocatorRelease(driver->remotePorts, port);
- return -1;
+ virObjectUnref(cfg);
+ return ret;
}
@@ -4070,15 +4073,17 @@
qemuProcessGraphicsSetupNetworkAddress(virDomainGraphicsListenDefPtr glisten,
static int
-qemuProcessGraphicsSetupListen(virQEMUDriverConfigPtr cfg,
+qemuProcessGraphicsSetupListen(virQEMUDriverPtr driver,
virDomainGraphicsDefPtr graphics,
virDomainObjPtr vm)
{
qemuDomainObjPrivatePtr priv = vm->privateData;
+ virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
const char *type = virDomainGraphicsTypeToString(graphics->type);
char *listenAddr = NULL;
bool useSocket = false;
size_t i;
+ int ret = -1;
switch (graphics->type) {
case VIR_DOMAIN_GRAPHICS_TYPE_VNC:
@@ -4111,12 +4116,12 @@ qemuProcessGraphicsSetupListen(virQEMUDriverConfigPtr cfg,
memset(glisten, 0, sizeof(virDomainGraphicsListenDef));
if (virAsprintf(&glisten->socket, "%s/%s.sock",
priv->libDir, type) < 0)
- return -1;
+ goto cleanup;
glisten->fromConfig = true;
glisten->type = VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_SOCKET;
} else if (listenAddr) {
if (VIR_STRDUP(glisten->address, listenAddr) < 0)
- return -1;
+ goto cleanup;
glisten->fromConfig = true;
}
}
@@ -4128,14 +4133,14 @@ qemuProcessGraphicsSetupListen(virQEMUDriverConfigPtr cfg,
if (qemuProcessGraphicsSetupNetworkAddress(glisten,
listenAddr) < 0)
- return -1;
+ goto cleanup;
break;
case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_SOCKET:
if (!glisten->socket) {
if (virAsprintf(&glisten->socket, "%s/%s.sock",
priv->libDir, type) < 0)
- return -1;
+ goto cleanup;
glisten->autoGenerated = true;
}
break;
@@ -4146,7 +4151,11 @@ qemuProcessGraphicsSetupListen(virQEMUDriverConfigPtr cfg,
}
}
- return 0;
+ ret = 0;
+
+ cleanup:
+ virObjectUnref(cfg);
+ return ret;
}
@@ -4155,7 +4164,6 @@ qemuProcessSetupGraphics(virQEMUDriverPtr driver,
virDomainObjPtr vm,
unsigned int flags)
{
- virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
bool allocate = !(flags & VIR_QEMU_PROCESS_START_PRETEND);
size_t i;
int ret = -1;
@@ -4176,8 +4184,7 @@ qemuProcessSetupGraphics(virQEMUDriverPtr driver,
break;
case VIR_DOMAIN_GRAPHICS_TYPE_SPICE:
- if (qemuProcessSPICEAllocatePorts(driver, cfg, graphics,
- allocate) < 0)
+ if (qemuProcessSPICEAllocatePorts(driver, graphics, allocate) < 0)
goto cleanup;
break;
@@ -4189,14 +4196,13 @@ qemuProcessSetupGraphics(virQEMUDriverPtr driver,
}
}
- if (qemuProcessGraphicsSetupListen(cfg, graphics, vm) < 0)
+ if (qemuProcessGraphicsSetupListen(driver, graphics, vm) < 0)
goto cleanup;
}
ret = 0;
cleanup:
- virObjectUnref(cfg);
return ret;
}
--
2.9.2