goto cleanup;
qemuDomainObjEnterMonitor(driver, vm);
- if (qemuMonitorAttachCharDev(priv->mon, charAlias, &chr->source) < 0) {
- ignore_value(qemuDomainObjExitMonitor(driver, vm));
- goto audit;
- }
+ if (qemuMonitorAttachCharDev(priv->mon, charAlias, &chr->source) < 0)
+ goto failchardev;
+
+ if (qemuMonitorAddDevice(priv->mon, devstr) < 0)
+ goto failadddev;
- if (devstr && qemuMonitorAddDevice(priv->mon, devstr) < 0) {
- /* detach associated chardev on error */
- qemuMonitorDetachCharDev(priv->mon, charAlias);
- ignore_value(qemuDomainObjExitMonitor(driver, vm));
- goto audit;
- }
if (qemuDomainObjExitMonitor(driver, vm) < 0)
goto audit;
VIR_FREE(charAlias);
VIR_FREE(devstr);
return ret;
+
+ failadddev:
+ /* detach associated chardev on error */
+ qemuMonitorDetachCharDev(priv->mon, charAlias);
+ failchardev:
+ ignore_value(qemuDomainObjExitMonitor(driver, vm));
+ goto audit;
}