]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
conf: Convert 'chr' in virDomainShmemDef to proper pointer
authorPeter Krempa <pkrempa@redhat.com>
Tue, 2 Nov 2021 15:01:57 +0000 (16:01 +0100)
committerPeter Krempa <pkrempa@redhat.com>
Fri, 19 Nov 2021 11:38:34 +0000 (12:38 +0100)
The main reason is to ensure that the private data are properly
allocated for every instance.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/conf/domain_audit.c
src/conf/domain_conf.c
src/conf/domain_conf.h
src/qemu/qemu_command.c
src/qemu/qemu_domain.c
src/qemu/qemu_hotplug.c
src/security/virt-aa-helper.c

index b08233fa4910e3917a016dce9f319827030d2ef4..69c5792b07fe33263a6a4beb29b24e3b31bb40c9 100644 (file)
@@ -898,7 +898,7 @@ virDomainAuditShmem(virDomainObj *vm,
 {
     char uuidstr[VIR_UUID_STRING_BUFLEN];
     char *vmname = virAuditEncode("vm", vm->def->name);
-    const char *srcpath = virDomainChrSourceDefGetPath(&def->server.chr);
+    const char *srcpath = virDomainChrSourceDefGetPath(def->server.chr);
     const char *virt = virDomainAuditGetVirtType(vm->def);
     char *shmpath = NULL;
 
index da0c64b460098f48fd7f7fa022297f0c39e71ea8..52f513f488cbe5058aa26511a75554233fc70538 100644 (file)
@@ -3069,7 +3069,7 @@ void virDomainShmemDefFree(virDomainShmemDef *def)
         return;
 
     virDomainDeviceInfoClear(&def->info);
-    virDomainChrSourceDefClear(&def->server.chr);
+    virObjectUnref(def->server.chr);
     g_free(def->name);
     g_free(def);
 }
@@ -13665,11 +13665,14 @@ virDomainShmemDefParseXML(virDomainXMLOption *xmlopt,
     if ((server = virXPathNode("./server[1]", ctxt))) {
         g_autofree char *tmp = NULL;
 
+        if (!(def->server.chr = virDomainChrSourceDefNew(xmlopt)))
+            return NULL;
+
         def->server.enabled = true;
-        def->server.chr.type = VIR_DOMAIN_CHR_TYPE_UNIX;
-        def->server.chr.data.nix.listen = false;
+        def->server.chr->type = VIR_DOMAIN_CHR_TYPE_UNIX;
+        def->server.chr->data.nix.listen = false;
         if ((tmp = virXMLPropString(server, "path")))
-            def->server.chr.data.nix.path = virFileSanitizePath(tmp);
+            def->server.chr->data.nix.path = virFileSanitizePath(tmp);
     }
 
     if ((msi = virXPathNode("./msi[1]", ctxt))) {
@@ -16814,8 +16817,8 @@ virDomainShmemDefEquals(virDomainShmemDef *src,
         return false;
 
     if (src->server.enabled) {
-        if (STRNEQ_NULLABLE(src->server.chr.data.nix.path,
-                            dst->server.chr.data.nix.path))
+        if (STRNEQ_NULLABLE(src->server.chr->data.nix.path,
+                            dst->server.chr->data.nix.path))
             return false;
     }
 
@@ -25868,7 +25871,7 @@ virDomainShmemDefFormat(virBuffer *buf,
 
     if (def->server.enabled) {
         virBufferAddLit(buf, "<server");
-        virBufferEscapeString(buf, " path='%s'", def->server.chr.data.nix.path);
+        virBufferEscapeString(buf, " path='%s'", def->server.chr->data.nix.path);
         virBufferAddLit(buf, "/>\n");
     }
 
index 0ecd3803db50fa50e609c9ca501fda305f030fe2..f222d8ca88ac0f21a05e3297cb844a4c652a3e52 100644 (file)
@@ -1997,7 +1997,7 @@ struct _virDomainShmemDef {
     virDomainShmemRole role;
     struct {
         bool enabled;
-        virDomainChrSourceDef chr;
+        virDomainChrSourceDef *chr;
     } server;
     struct {
         bool enabled;
index f97cdc70abacff2c46e177bc860e1f10585147f4..60336947b5472f87edadeb5f2ceec1af4ba11332 100644 (file)
@@ -9368,7 +9368,7 @@ qemuBuildShmemCommandLine(virLogManager *logManager,
     if (shmem->server.enabled) {
         chardev = qemuBuildChrChardevStr(logManager, secManager,
                                         cmd, cfg, def,
-                                        &shmem->server.chr,
+                                        shmem->server.chr,
                                         shmem->info.alias, qemuCaps,
                                         cdevflags);
         if (!chardev)
index fb203bc83085081a2f3986601af3ea6aba1df5ce..e69215cee2d02dddfd8a63b27146616b512f0461 100644 (file)
@@ -9964,11 +9964,11 @@ void
 qemuDomainPrepareShmemChardev(virDomainShmemDef *shmem)
 {
     if (!shmem->server.enabled ||
-        shmem->server.chr.data.nix.path)
+        shmem->server.chr->data.nix.path)
         return;
 
-    shmem->server.chr.data.nix.path = g_strdup_printf("/var/lib/libvirt/shmem-%s-sock",
-                                                      shmem->name);
+    shmem->server.chr->data.nix.path = g_strdup_printf("/var/lib/libvirt/shmem-%s-sock",
+                                                       shmem->name);
 }
 
 
index 3df0a1f17aca70e3f3402e0a47abd398c2824982..0e798dc2374910c817b63f44bcbb30b2a7fe86cf 100644 (file)
@@ -3064,7 +3064,7 @@ qemuDomainAttachShmemDevice(virQEMUDriver *driver,
     qemuDomainObjEnterMonitor(driver, vm);
 
     if (shmem->server.enabled) {
-        if (qemuHotplugChardevAttach(priv->mon, charAlias, &shmem->server.chr) < 0)
+        if (qemuHotplugChardevAttach(priv->mon, charAlias, shmem->server.chr) < 0)
             goto exit_monitor;
     } else {
         if (qemuMonitorAddObject(priv->mon, &props, &memAlias) < 0)
index 218e07bfb04f4de81080018cbed341e2e23cff8b..b7ffb5e2c3245d30d1156b4323343b6d3d8f29b8 100644 (file)
@@ -1172,8 +1172,8 @@ get_files(vahControl * ctl)
          * When the server path is enabled, use it - otherwise fallback to
          * model dependent defaults. */
         if (shmem->server.enabled &&
-            shmem->server.chr.data.nix.path) {
-                if (vah_add_file(&buf, shmem->server.chr.data.nix.path,
+            shmem->server.chr->data.nix.path) {
+                if (vah_add_file(&buf, shmem->server.chr->data.nix.path,
                         "rw") != 0)
                     goto cleanup;
         } else {