]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemuDomainBuildNamespace: Populate TPM from daemon's namespace
authorMichal Privoznik <mprivozn@redhat.com>
Tue, 21 Jul 2020 12:29:09 +0000 (14:29 +0200)
committerMichal Privoznik <mprivozn@redhat.com>
Mon, 3 Aug 2020 17:40:37 +0000 (19:40 +0200)
As mentioned in one of previous commits, populating domain's
namespace from pre-exec() hook is dangerous. This commit moves
population of the namespace with domain TPM into daemon's
namespace.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/qemu/qemu_namespace.c

index a922afe985ad3345d14ff89730cfb9039c0b7af0..f31aae281cd146132cfd0d1fbfdb5256292a9bdf 100644 (file)
@@ -663,12 +663,11 @@ qemuDomainSetupAllChardevs(virDomainObjPtr vm,
 
 static int
 qemuDomainSetupTPM(virDomainTPMDefPtr dev,
-                   const struct qemuDomainCreateDeviceData *data)
+                   char ***paths)
 {
     switch (dev->type) {
     case VIR_DOMAIN_TPM_TYPE_PASSTHROUGH:
-        if (qemuDomainCreateDevice(dev->data.passthrough.source.data.file.path,
-                                   data, false) < 0)
+        if (virStringListAdd(paths, dev->data.passthrough.source.data.file.path) < 0)
             return -1;
         break;
 
@@ -684,14 +683,14 @@ qemuDomainSetupTPM(virDomainTPMDefPtr dev,
 
 static int
 qemuDomainSetupAllTPMs(virDomainObjPtr vm,
-                       const struct qemuDomainCreateDeviceData *data)
+                       char ***paths)
 {
     size_t i;
 
     VIR_DEBUG("Setting up TPMs");
 
     for (i = 0; i < vm->def->ntpms; i++) {
-        if (qemuDomainSetupTPM(vm->def->tpms[i], data) < 0)
+        if (qemuDomainSetupTPM(vm->def->tpms[i], paths) < 0)
             return -1;
     }
 
@@ -880,6 +879,9 @@ qemuDomainBuildNamespace(virQEMUDriverConfigPtr cfg,
     if (qemuDomainSetupAllChardevs(vm, &paths) < 0)
         return -1;
 
+    if (qemuDomainSetupAllTPMs(vm, &paths) < 0)
+        return -1;
+
     if (qemuNamespaceMknodPaths(vm, (const char **) paths) < 0)
         return -1;
 
@@ -931,9 +933,6 @@ qemuDomainUnshareNamespace(virQEMUDriverConfigPtr cfg,
     if (qemuDomainSetupDev(mgr, vm, devPath) < 0)
         goto cleanup;
 
-    if (qemuDomainSetupAllTPMs(vm, &data) < 0)
-        goto cleanup;
-
     if (qemuDomainSetupAllGraphics(vm, &data) < 0)
         goto cleanup;