]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu: Audit memory size with memory hotplug operations
authorPeter Krempa <pkrempa@redhat.com>
Fri, 26 Jun 2015 15:14:33 +0000 (17:14 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Wed, 1 Jul 2015 08:19:54 +0000 (10:19 +0200)
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

index 11f983fb295f43d47fc1899e553116107e0cd825..391190dcdd17c91c917285a2fadd0c620a687a0c 100644 (file)
@@ -1749,6 +1749,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;
@@ -1815,6 +1816,9 @@ qemuDomainAttachMemory(virQEMUDriverPtr driver,
     if (fix_balloon)
         vm->def->mem.cur_balloon += mem->size;
 
+    virDomainAuditMemory(vm, oldmem, virDomainDefGetMemoryActual(vm->def),
+                         "update", ret == 0);
+
     /* mem is consumed by vm->def */
     mem = NULL;
 
@@ -2904,10 +2908,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);
@@ -2916,12 +2922,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;
 
@@ -2929,12 +2935,14 @@ qemuDomainRemoveMemoryDevice(virQEMUDriverPtr driver,
         virDomainMemoryRemove(vm->def, idx);
 
     virDomainMemoryDefFree(mem);
-    VIR_FREE(backendAlias);
-    return 0;
+    ret = 0;
+
+ cleanup:
+    virDomainAuditMemory(vm, oldmem, virDomainDefGetMemoryActual(vm->def),
+                         "update", ret == 0);
 
- error:
     VIR_FREE(backendAlias);
-    return -1;
+    return ret;
 }