From: John Ferlan Date: Mon, 13 Jun 2016 16:57:15 +0000 (-0400) Subject: qemu: Refactor qemuDomainAttachChrDevice error paths X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=55931292c94a296eb6a96937a5b1a17394199577;p=libvirt.git qemu: Refactor qemuDomainAttachChrDevice error paths Refactor the error paths for attaching char device (it's about to be more complicated). Signed-off-by: John Ferlan --- diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c index 58156c6a43..7d050739ad 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -1524,17 +1524,12 @@ int qemuDomainAttachChrDevice(virQEMUDriverPtr driver, 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; @@ -1550,6 +1545,13 @@ int qemuDomainAttachChrDevice(virQEMUDriverPtr driver, 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; }