The memory device hot(un)plug was missing calls to the auditing code.
Resolves:
https://bugzilla.redhat.com/show_bug.cgi?id=1226234
---
src/qemu/qemu_hotplug.c | 20 ++++++++++++++------
1 file changed, 14 insertions(+), 6 deletions(-)
diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c
index 0628964..13e97e8 100644
--- a/src/qemu/qemu_hotplug.c
+++ b/src/qemu/qemu_hotplug.c
@@ -1735,6 +1735,7 @@ qemuDomainAttachMemory(virQEMUDriverPtr driver,
{
qemuDomainObjPrivatePtr priv = vm->privateData;
virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
+ unsigned long long oldmem = virDomainDefGetMemoryActual(vm->def);
char *devstr = NULL;
char *objalias = NULL;
const char *backendType;
@@ -1801,6 +1802,9 @@ qemuDomainAttachMemory(virQEMUDriverPtr driver,
if (fix_balloon)
vm->def->mem.cur_balloon += mem->size;
+ virDomainAuditMemory(vm, oldmem, virDomainDefGetMemoryActual(vm->def),
+ "hotplug", ret == 0);
+
/* mem is consumed by vm->def */
mem = NULL;
@@ -2890,10 +2894,12 @@ qemuDomainRemoveMemoryDevice(virQEMUDriverPtr driver,
virDomainMemoryDefPtr mem)
{
qemuDomainObjPrivatePtr priv = vm->privateData;
+ unsigned long long oldmem = virDomainDefGetMemoryActual(vm->def);
virObjectEventPtr event;
char *backendAlias = NULL;
int rc;
int idx;
+ int ret = -1;
VIR_DEBUG("Removing memory device %s from domain %p %s",
mem->info.alias, vm, vm->def->name);
@@ -2902,12 +2908,12 @@ qemuDomainRemoveMemoryDevice(virQEMUDriverPtr driver,
qemuDomainEventQueue(driver, event);
if (virAsprintf(&backendAlias, "mem%s", mem->info.alias) < 0)
- goto error;
+ goto cleanup;
qemuDomainObjEnterMonitor(driver, vm);
rc = qemuMonitorDelObject(priv->mon, backendAlias);
if (qemuDomainObjExitMonitor(driver, vm) < 0 || rc < 0)
- goto error;
+ goto cleanup;
vm->def->mem.cur_balloon -= mem->size;
@@ -2915,12 +2921,14 @@ qemuDomainRemoveMemoryDevice(virQEMUDriverPtr driver,
virDomainMemoryRemove(vm->def, idx);
virDomainMemoryDefFree(mem);
- VIR_FREE(backendAlias);
- return 0;
+ ret = 0;
+
+ cleanup:
+ virDomainAuditMemory(vm, oldmem, virDomainDefGetMemoryActual(vm->def),
+ "hotunplug", ret == 0);
- error:
VIR_FREE(backendAlias);
- return -1;
+ return ret;
}
--
2.4.1