From: Daniel P. Berrange Date: Thu, 2 Jun 2011 13:52:24 +0000 (+0100) Subject: Fix auditing of disk hotunplug operations X-Git-Tag: v0.9.2~29 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=020342e68debddff641f70f87b5c6991c128648a;p=thirdparty%2Flibvirt.git Fix auditing of disk hotunplug operations The qemuAuditDisk calls in disk hotunplug operations were being passed 'ret >= 0', but the code which sets ret to 0 was not yet executed, and the error path had already jumped to the 'cleanup' label. This meant hotunplug failures were never audited, and hotunplug success was audited as a failure * src/qemu/qemu_hotplug.c: Fix auditing of hotunplug --- diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c index c9e2d08a37..fe47896616 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -1191,12 +1191,14 @@ int qemuDomainDetachPciDiskDevice(struct qemud_driver *driver, if (qemuCapsGet(priv->qemuCaps, QEMU_CAPS_DEVICE)) { if (qemuMonitorDelDevice(priv->mon, detach->info.alias) < 0) { qemuDomainObjExitMonitor(vm); + qemuAuditDisk(vm, detach, NULL, "detach", false); goto cleanup; } } else { if (qemuMonitorRemovePCIDevice(priv->mon, &detach->info.addr.pci) < 0) { qemuDomainObjExitMonitor(vm); + qemuAuditDisk(vm, detach, NULL, "detach", false); goto cleanup; } } @@ -1206,7 +1208,7 @@ int qemuDomainDetachPciDiskDevice(struct qemud_driver *driver, qemuDomainObjExitMonitorWithDriver(driver, vm); - qemuAuditDisk(vm, detach, NULL, "detach", ret >= 0); + qemuAuditDisk(vm, detach, NULL, "detach", true); if (qemuCapsGet(priv->qemuCaps, QEMU_CAPS_DEVICE) && qemuDomainPCIAddressReleaseAddr(priv->pciaddrs, &detach->info) < 0) @@ -1283,6 +1285,7 @@ int qemuDomainDetachDiskDevice(struct qemud_driver *driver, qemuDomainObjEnterMonitorWithDriver(driver, vm); if (qemuMonitorDelDevice(priv->mon, detach->info.alias) < 0) { qemuDomainObjExitMonitor(vm); + qemuAuditDisk(vm, detach, NULL, "detach", false); goto cleanup; } @@ -1291,7 +1294,7 @@ int qemuDomainDetachDiskDevice(struct qemud_driver *driver, qemuDomainObjExitMonitorWithDriver(driver, vm); - qemuAuditDisk(vm, detach, NULL, "detach", ret >= 0); + qemuAuditDisk(vm, detach, NULL, "detach", true); virDomainDiskRemove(vm->def, i);