qemu: namespace: Don't use 'virStringListAdd' inside loops

'virStringListAdd' calculates the string list length on every invocation
so constructing a string list using it results in O(n^2) complexity.

Use a GSList which has cheap insertion and iteration and doesn't need
failure handling.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
Peter Krempa 2021-02-04 14:10:42 +01:00
parent 0ec601bc48
commit 9afed29b45

View File

@ -40,6 +40,7 @@
#include "virlog.h" #include "virlog.h"
#include "virstring.h" #include "virstring.h"
#include "virdevmapper.h" #include "virdevmapper.h"
#include "virglibutil.h"
#define VIR_FROM_THIS VIR_FROM_QEMU #define VIR_FROM_THIS VIR_FROM_QEMU
@ -190,7 +191,7 @@ qemuDomainGetPreservedMounts(virQEMUDriverConfigPtr cfg,
static int static int
qemuDomainPopulateDevices(virQEMUDriverConfigPtr cfg, qemuDomainPopulateDevices(virQEMUDriverConfigPtr cfg,
char ***paths) GSList **paths)
{ {
const char *const *devices = (const char *const *) cfg->cgroupDeviceACL; const char *const *devices = (const char *const *) cfg->cgroupDeviceACL;
size_t i; size_t i;
@ -199,8 +200,7 @@ qemuDomainPopulateDevices(virQEMUDriverConfigPtr cfg,
devices = defaultDeviceACL; devices = defaultDeviceACL;
for (i = 0; devices[i]; i++) { for (i = 0; devices[i]; i++) {
if (virStringListAdd(paths, devices[i]) < 0) *paths = g_slist_prepend(*paths, g_strdup(devices[i]));
return -1;
} }
return 0; return 0;
@ -237,7 +237,7 @@ qemuDomainSetupDev(virSecurityManagerPtr mgr,
static int static int
qemuDomainSetupDisk(virStorageSourcePtr src, qemuDomainSetupDisk(virStorageSourcePtr src,
char ***paths) GSList **paths)
{ {
virStorageSourcePtr next; virStorageSourcePtr next;
bool hasNVMe = false; bool hasNVMe = false;
@ -252,6 +252,7 @@ qemuDomainSetupDisk(virStorageSourcePtr src,
return -1; return -1;
} else { } else {
g_auto(GStrv) targetPaths = NULL; g_auto(GStrv) targetPaths = NULL;
GStrv tmp;
if (virStorageSourceIsEmpty(next) || if (virStorageSourceIsEmpty(next) ||
!virStorageSourceIsLocalStorage(next)) { !virStorageSourceIsLocalStorage(next)) {
@ -269,22 +270,21 @@ qemuDomainSetupDisk(virStorageSourcePtr src,
return -1; return -1;
} }
if (virStringListMerge(paths, &targetPaths) < 0) if (targetPaths) {
return -1; for (tmp = targetPaths; *tmp; tmp++)
*paths = g_slist_prepend(*paths, g_steal_pointer(tmp));
}
} }
if (virStringListAdd(paths, tmpPath) < 0) *paths = g_slist_prepend(*paths, g_steal_pointer(&tmpPath));
return -1;
} }
/* qemu-pr-helper might require access to /dev/mapper/control. */ /* qemu-pr-helper might require access to /dev/mapper/control. */
if (src->pr && if (src->pr)
virStringListAdd(paths, QEMU_DEVICE_MAPPER_CONTROL_PATH) < 0) *paths = g_slist_prepend(*paths, g_strdup(QEMU_DEVICE_MAPPER_CONTROL_PATH));
return -1;
if (hasNVMe && if (hasNVMe)
virStringListAdd(paths, QEMU_DEV_VFIO) < 0) *paths = g_slist_prepend(*paths, g_strdup(QEMU_DEV_VFIO));
return -1;
return 0; return 0;
} }
@ -292,7 +292,7 @@ qemuDomainSetupDisk(virStorageSourcePtr src,
static int static int
qemuDomainSetupAllDisks(virDomainObjPtr vm, qemuDomainSetupAllDisks(virDomainObjPtr vm,
char ***paths) GSList **paths)
{ {
size_t i; size_t i;
@ -313,20 +313,19 @@ static int
qemuDomainSetupHostdev(virDomainObjPtr vm, qemuDomainSetupHostdev(virDomainObjPtr vm,
virDomainHostdevDefPtr hostdev, virDomainHostdevDefPtr hostdev,
bool hotplug, bool hotplug,
char ***paths) GSList **paths)
{ {
g_autofree char *path = NULL; g_autofree char *path = NULL;
if (qemuDomainGetHostdevPath(hostdev, &path, NULL) < 0) if (qemuDomainGetHostdevPath(hostdev, &path, NULL) < 0)
return -1; return -1;
if (path && virStringListAdd(paths, path) < 0) if (path)
return -1; *paths = g_slist_prepend(*paths, g_steal_pointer(&path));
if (qemuHostdevNeedsVFIO(hostdev) && if (qemuHostdevNeedsVFIO(hostdev) &&
(!hotplug || !qemuDomainNeedsVFIO(vm->def)) && (!hotplug || !qemuDomainNeedsVFIO(vm->def)))
virStringListAdd(paths, QEMU_DEV_VFIO) < 0) *paths = g_slist_prepend(*paths, g_strdup(QEMU_DEV_VFIO));
return -1;
return 0; return 0;
} }
@ -334,7 +333,7 @@ qemuDomainSetupHostdev(virDomainObjPtr vm,
static int static int
qemuDomainSetupAllHostdevs(virDomainObjPtr vm, qemuDomainSetupAllHostdevs(virDomainObjPtr vm,
char ***paths) GSList **paths)
{ {
size_t i; size_t i;
@ -353,19 +352,21 @@ qemuDomainSetupAllHostdevs(virDomainObjPtr vm,
static int static int
qemuDomainSetupMemory(virDomainMemoryDefPtr mem, qemuDomainSetupMemory(virDomainMemoryDefPtr mem,
char ***paths) GSList **paths)
{ {
if (mem->model != VIR_DOMAIN_MEMORY_MODEL_NVDIMM && if (mem->model != VIR_DOMAIN_MEMORY_MODEL_NVDIMM &&
mem->model != VIR_DOMAIN_MEMORY_MODEL_VIRTIO_PMEM) mem->model != VIR_DOMAIN_MEMORY_MODEL_VIRTIO_PMEM)
return 0; return 0;
return virStringListAdd(paths, mem->nvdimmPath); *paths = g_slist_prepend(*paths, g_strdup(mem->nvdimmPath));
return 0;
} }
static int static int
qemuDomainSetupAllMemories(virDomainObjPtr vm, qemuDomainSetupAllMemories(virDomainObjPtr vm,
char ***paths) GSList **paths)
{ {
size_t i; size_t i;
@ -385,7 +386,7 @@ qemuDomainSetupChardev(virDomainDefPtr def G_GNUC_UNUSED,
virDomainChrDefPtr dev, virDomainChrDefPtr dev,
void *opaque) void *opaque)
{ {
char ***paths = opaque; GSList **paths = opaque;
const char *path = NULL; const char *path = NULL;
if (!(path = virDomainChrSourceDefGetPath(dev->source))) if (!(path = virDomainChrSourceDefGetPath(dev->source)))
@ -396,13 +397,14 @@ qemuDomainSetupChardev(virDomainDefPtr def G_GNUC_UNUSED,
dev->source->data.nix.listen) dev->source->data.nix.listen)
return 0; return 0;
return virStringListAdd(paths, path); *paths = g_slist_prepend(*paths, g_strdup(path));
return 0;
} }
static int static int
qemuDomainSetupAllChardevs(virDomainObjPtr vm, qemuDomainSetupAllChardevs(virDomainObjPtr vm,
char ***paths) GSList **paths)
{ {
VIR_DEBUG("Setting up chardevs"); VIR_DEBUG("Setting up chardevs");
@ -419,12 +421,11 @@ qemuDomainSetupAllChardevs(virDomainObjPtr vm,
static int static int
qemuDomainSetupTPM(virDomainTPMDefPtr dev, qemuDomainSetupTPM(virDomainTPMDefPtr dev,
char ***paths) GSList **paths)
{ {
switch (dev->type) { switch (dev->type) {
case VIR_DOMAIN_TPM_TYPE_PASSTHROUGH: case VIR_DOMAIN_TPM_TYPE_PASSTHROUGH:
if (virStringListAdd(paths, dev->data.passthrough.source.data.file.path) < 0) *paths = g_slist_prepend(*paths, g_strdup(dev->data.passthrough.source.data.file.path));
return -1;
break; break;
case VIR_DOMAIN_TPM_TYPE_EMULATOR: case VIR_DOMAIN_TPM_TYPE_EMULATOR:
@ -439,7 +440,7 @@ qemuDomainSetupTPM(virDomainTPMDefPtr dev,
static int static int
qemuDomainSetupAllTPMs(virDomainObjPtr vm, qemuDomainSetupAllTPMs(virDomainObjPtr vm,
char ***paths) GSList **paths)
{ {
size_t i; size_t i;
@ -457,20 +458,21 @@ qemuDomainSetupAllTPMs(virDomainObjPtr vm,
static int static int
qemuDomainSetupGraphics(virDomainGraphicsDefPtr gfx, qemuDomainSetupGraphics(virDomainGraphicsDefPtr gfx,
char ***paths) GSList **paths)
{ {
const char *rendernode = virDomainGraphicsGetRenderNode(gfx); const char *rendernode = virDomainGraphicsGetRenderNode(gfx);
if (!rendernode) if (!rendernode)
return 0; return 0;
return virStringListAdd(paths, rendernode); *paths = g_slist_prepend(*paths, g_strdup(rendernode));
return 0;
} }
static int static int
qemuDomainSetupAllGraphics(virDomainObjPtr vm, qemuDomainSetupAllGraphics(virDomainObjPtr vm,
char ***paths) GSList **paths)
{ {
size_t i; size_t i;
@ -488,12 +490,14 @@ qemuDomainSetupAllGraphics(virDomainObjPtr vm,
static int static int
qemuDomainSetupInput(virDomainInputDefPtr input, qemuDomainSetupInput(virDomainInputDefPtr input,
char ***paths) GSList **paths)
{ {
const char *path = virDomainInputDefGetPath(input); const char *path = virDomainInputDefGetPath(input);
if (path && virStringListAdd(paths, path) < 0) if (!path)
return -1; return 0;
*paths = g_slist_prepend(*paths, g_strdup(path));
return 0; return 0;
} }
@ -501,7 +505,7 @@ qemuDomainSetupInput(virDomainInputDefPtr input,
static int static int
qemuDomainSetupAllInputs(virDomainObjPtr vm, qemuDomainSetupAllInputs(virDomainObjPtr vm,
char ***paths) GSList **paths)
{ {
size_t i; size_t i;
@ -518,12 +522,11 @@ qemuDomainSetupAllInputs(virDomainObjPtr vm,
static int static int
qemuDomainSetupRNG(virDomainRNGDefPtr rng, qemuDomainSetupRNG(virDomainRNGDefPtr rng,
char ***paths) GSList **paths)
{ {
switch ((virDomainRNGBackend) rng->backend) { switch ((virDomainRNGBackend) rng->backend) {
case VIR_DOMAIN_RNG_BACKEND_RANDOM: case VIR_DOMAIN_RNG_BACKEND_RANDOM:
if (virStringListAdd(paths, rng->source.file) < 0) *paths = g_slist_prepend(*paths, g_strdup(rng->source.file));
return -1;
break; break;
case VIR_DOMAIN_RNG_BACKEND_EGD: case VIR_DOMAIN_RNG_BACKEND_EGD:
@ -539,7 +542,7 @@ qemuDomainSetupRNG(virDomainRNGDefPtr rng,
static int static int
qemuDomainSetupAllRNGs(virDomainObjPtr vm, qemuDomainSetupAllRNGs(virDomainObjPtr vm,
char ***paths) GSList **paths)
{ {
size_t i; size_t i;
@ -557,7 +560,7 @@ qemuDomainSetupAllRNGs(virDomainObjPtr vm,
static int static int
qemuDomainSetupLoader(virDomainObjPtr vm, qemuDomainSetupLoader(virDomainObjPtr vm,
char ***paths) GSList **paths)
{ {
virDomainLoaderDefPtr loader = vm->def->os.loader; virDomainLoaderDefPtr loader = vm->def->os.loader;
@ -566,17 +569,14 @@ qemuDomainSetupLoader(virDomainObjPtr vm,
if (loader) { if (loader) {
switch ((virDomainLoader) loader->type) { switch ((virDomainLoader) loader->type) {
case VIR_DOMAIN_LOADER_TYPE_ROM: case VIR_DOMAIN_LOADER_TYPE_ROM:
if (virStringListAdd(paths, loader->path) < 0) *paths = g_slist_prepend(*paths, g_strdup(loader->path));
return -1;
break; break;
case VIR_DOMAIN_LOADER_TYPE_PFLASH: case VIR_DOMAIN_LOADER_TYPE_PFLASH:
if (virStringListAdd(paths, loader->path) < 0) *paths = g_slist_prepend(*paths, g_strdup(loader->path));
return -1;
if (loader->nvram && if (loader->nvram)
virStringListAdd(paths, loader->nvram) < 0) *paths = g_slist_prepend(*paths, g_strdup(loader->nvram));
return -1;
break; break;
case VIR_DOMAIN_LOADER_TYPE_NONE: case VIR_DOMAIN_LOADER_TYPE_NONE:
@ -592,7 +592,7 @@ qemuDomainSetupLoader(virDomainObjPtr vm,
static int static int
qemuDomainSetupLaunchSecurity(virDomainObjPtr vm, qemuDomainSetupLaunchSecurity(virDomainObjPtr vm,
char ***paths) GSList **paths)
{ {
virDomainSEVDefPtr sev = vm->def->sev; virDomainSEVDefPtr sev = vm->def->sev;
@ -601,8 +601,7 @@ qemuDomainSetupLaunchSecurity(virDomainObjPtr vm,
VIR_DEBUG("Setting up launch security"); VIR_DEBUG("Setting up launch security");
if (virStringListAdd(paths, QEMU_DEV_SEV) < 0) *paths = g_slist_prepend(*paths, g_strdup(QEMU_DEV_SEV));
return -1;
VIR_DEBUG("Set up launch security"); VIR_DEBUG("Set up launch security");
return 0; return 0;
@ -611,14 +610,14 @@ qemuDomainSetupLaunchSecurity(virDomainObjPtr vm,
static int static int
qemuNamespaceMknodPaths(virDomainObjPtr vm, qemuNamespaceMknodPaths(virDomainObjPtr vm,
const char **paths); GSList *paths);
int int
qemuDomainBuildNamespace(virQEMUDriverConfigPtr cfg, qemuDomainBuildNamespace(virQEMUDriverConfigPtr cfg,
virDomainObjPtr vm) virDomainObjPtr vm)
{ {
g_auto(GStrv) paths = NULL; g_autoptr(virGSListString) paths = NULL;
if (!qemuDomainNamespaceEnabled(vm, QEMU_DOMAIN_NS_MOUNT)) { if (!qemuDomainNamespaceEnabled(vm, QEMU_DOMAIN_NS_MOUNT)) {
VIR_DEBUG("namespaces disabled for domain %s", vm->def->name); VIR_DEBUG("namespaces disabled for domain %s", vm->def->name);
@ -658,7 +657,7 @@ qemuDomainBuildNamespace(virQEMUDriverConfigPtr cfg,
if (qemuDomainSetupLaunchSecurity(vm, &paths) < 0) if (qemuDomainSetupLaunchSecurity(vm, &paths) < 0)
return -1; return -1;
if (qemuNamespaceMknodPaths(vm, (const char **) paths) < 0) if (qemuNamespaceMknodPaths(vm, paths) < 0)
return -1; return -1;
return 0; return 0;
@ -1228,20 +1227,19 @@ qemuNamespacePrepareOneItem(qemuNamespaceMknodDataPtr data,
static int static int
qemuNamespaceMknodPaths(virDomainObjPtr vm, qemuNamespaceMknodPaths(virDomainObjPtr vm,
const char **paths) GSList *paths)
{ {
qemuDomainObjPrivatePtr priv = vm->privateData; qemuDomainObjPrivatePtr priv = vm->privateData;
virQEMUDriverPtr driver = priv->driver; virQEMUDriverPtr driver = priv->driver;
g_autoptr(virQEMUDriverConfig) cfg = NULL; g_autoptr(virQEMUDriverConfig) cfg = NULL;
char **devMountsPath = NULL; char **devMountsPath = NULL;
size_t ndevMountsPath = 0; size_t ndevMountsPath = 0;
size_t npaths = 0;
qemuNamespaceMknodData data = { 0 }; qemuNamespaceMknodData data = { 0 };
size_t i; size_t i;
int ret = -1; int ret = -1;
GSList *next;
npaths = virStringListLength(paths); if (!paths)
if (npaths == 0)
return 0; return 0;
cfg = virQEMUDriverGetConfig(driver); cfg = virQEMUDriverGetConfig(driver);
@ -1253,8 +1251,10 @@ qemuNamespaceMknodPaths(virDomainObjPtr vm,
data.driver = driver; data.driver = driver;
data.vm = vm; data.vm = vm;
for (i = 0; i < npaths; i++) { for (next = paths; next; next = next->next) {
if (qemuNamespacePrepareOneItem(&data, cfg, vm, paths[i], const char *path = next->data;
if (qemuNamespacePrepareOneItem(&data, cfg, vm, path,
devMountsPath, ndevMountsPath) < 0) devMountsPath, ndevMountsPath) < 0)
goto cleanup; goto cleanup;
} }
@ -1299,7 +1299,7 @@ qemuNamespaceMknodPaths(virDomainObjPtr vm,
static int static int
qemuNamespaceMknodPaths(virDomainObjPtr vm G_GNUC_UNUSED, qemuNamespaceMknodPaths(virDomainObjPtr vm G_GNUC_UNUSED,
const char **paths G_GNUC_UNUSED) GSList *paths G_GNUC_UNUSED)
{ {
virReportSystemError(ENOSYS, "%s", virReportSystemError(ENOSYS, "%s",
_("Namespaces are not supported on this platform.")); _("Namespaces are not supported on this platform."));
@ -1314,11 +1314,11 @@ static int
qemuNamespaceUnlinkHelper(pid_t pid G_GNUC_UNUSED, qemuNamespaceUnlinkHelper(pid_t pid G_GNUC_UNUSED,
void *opaque) void *opaque)
{ {
char **paths = opaque; g_autoptr(virGSListString) paths = opaque;
size_t i; GSList *next;
for (i = 0; paths[i]; i++) { for (next = paths; next; next = next->next) {
const char *path = paths[i]; const char *path = next->data;
VIR_DEBUG("Unlinking %s", path); VIR_DEBUG("Unlinking %s", path);
if (unlink(path) < 0 && errno != ENOENT) { if (unlink(path) < 0 && errno != ENOENT) {
@ -1328,25 +1328,22 @@ qemuNamespaceUnlinkHelper(pid_t pid G_GNUC_UNUSED,
} }
} }
g_strfreev(paths);
return 0; return 0;
} }
static int static int
qemuNamespaceUnlinkPaths(virDomainObjPtr vm, qemuNamespaceUnlinkPaths(virDomainObjPtr vm,
const char **paths) GSList *paths)
{ {
qemuDomainObjPrivatePtr priv = vm->privateData; qemuDomainObjPrivatePtr priv = vm->privateData;
virQEMUDriverPtr driver = priv->driver; virQEMUDriverPtr driver = priv->driver;
g_autoptr(virQEMUDriverConfig) cfg = NULL; g_autoptr(virQEMUDriverConfig) cfg = NULL;
g_auto(GStrv) unlinkPaths = NULL;
g_auto(GStrv) devMountsPath = NULL; g_auto(GStrv) devMountsPath = NULL;
size_t npaths; g_autoptr(virGSListString) unlinkPaths = NULL;
size_t i; GSList *next;
npaths = virStringListLength(paths); if (!paths)
if (!npaths)
return 0; return 0;
cfg = virQEMUDriverGetConfig(driver); cfg = virQEMUDriverGetConfig(driver);
@ -1354,10 +1351,10 @@ qemuNamespaceUnlinkPaths(virDomainObjPtr vm,
if (qemuDomainGetPreservedMounts(cfg, vm, &devMountsPath, NULL, NULL) < 0) if (qemuDomainGetPreservedMounts(cfg, vm, &devMountsPath, NULL, NULL) < 0)
return -1; return -1;
for (i = 0; i < npaths; i++) { for (next = paths; next; next = next->next) {
const char *file = paths[i]; const char *path = next->data;
if (STRPREFIX(file, QEMU_DEVPREFIX)) { if (STRPREFIX(path, QEMU_DEVPREFIX)) {
GStrv mount; GStrv mount;
bool inSubmount = false; bool inSubmount = false;
@ -1365,15 +1362,14 @@ qemuNamespaceUnlinkPaths(virDomainObjPtr vm,
if (STREQ(*mount, "/dev")) if (STREQ(*mount, "/dev"))
continue; continue;
if (STRPREFIX(file, *mount)) { if (STRPREFIX(path, *mount)) {
inSubmount = true; inSubmount = true;
break; break;
} }
} }
if (!inSubmount && if (!inSubmount)
virStringListAdd(&unlinkPaths, file) < 0) unlinkPaths = g_slist_prepend(unlinkPaths, g_strdup(path));
return -1;
} }
} }
@ -1391,7 +1387,7 @@ int
qemuDomainNamespaceSetupDisk(virDomainObjPtr vm, qemuDomainNamespaceSetupDisk(virDomainObjPtr vm,
virStorageSourcePtr src) virStorageSourcePtr src)
{ {
g_auto(GStrv) paths = NULL; g_autoptr(virGSListString) paths = NULL;
if (!qemuDomainNamespaceEnabled(vm, QEMU_DOMAIN_NS_MOUNT)) if (!qemuDomainNamespaceEnabled(vm, QEMU_DOMAIN_NS_MOUNT))
return 0; return 0;
@ -1399,7 +1395,7 @@ qemuDomainNamespaceSetupDisk(virDomainObjPtr vm,
if (qemuDomainSetupDisk(src, &paths) < 0) if (qemuDomainSetupDisk(src, &paths) < 0)
return -1; return -1;
if (qemuNamespaceMknodPaths(vm, (const char **) paths) < 0) if (qemuNamespaceMknodPaths(vm, paths) < 0)
return -1; return -1;
return 0; return 0;
@ -1435,7 +1431,7 @@ int
qemuDomainNamespaceSetupHostdev(virDomainObjPtr vm, qemuDomainNamespaceSetupHostdev(virDomainObjPtr vm,
virDomainHostdevDefPtr hostdev) virDomainHostdevDefPtr hostdev)
{ {
g_auto(GStrv) paths = NULL; g_autoptr(virGSListString) paths = NULL;
if (!qemuDomainNamespaceEnabled(vm, QEMU_DOMAIN_NS_MOUNT)) if (!qemuDomainNamespaceEnabled(vm, QEMU_DOMAIN_NS_MOUNT))
return 0; return 0;
@ -1446,7 +1442,7 @@ qemuDomainNamespaceSetupHostdev(virDomainObjPtr vm,
&paths) < 0) &paths) < 0)
return -1; return -1;
if (qemuNamespaceMknodPaths(vm, (const char **) paths) < 0) if (qemuNamespaceMknodPaths(vm, paths) < 0)
return -1; return -1;
return 0; return 0;
@ -1468,7 +1464,7 @@ int
qemuDomainNamespaceTeardownHostdev(virDomainObjPtr vm, qemuDomainNamespaceTeardownHostdev(virDomainObjPtr vm,
virDomainHostdevDefPtr hostdev) virDomainHostdevDefPtr hostdev)
{ {
g_auto(GStrv) paths = NULL; g_autoptr(virGSListString) paths = NULL;
if (!qemuDomainNamespaceEnabled(vm, QEMU_DOMAIN_NS_MOUNT)) if (!qemuDomainNamespaceEnabled(vm, QEMU_DOMAIN_NS_MOUNT))
return 0; return 0;
@ -1479,7 +1475,7 @@ qemuDomainNamespaceTeardownHostdev(virDomainObjPtr vm,
&paths) < 0) &paths) < 0)
return -1; return -1;
if (qemuNamespaceUnlinkPaths(vm, (const char **) paths) < 0) if (qemuNamespaceUnlinkPaths(vm, paths) < 0)
return -1; return -1;
return 0; return 0;
@ -1490,7 +1486,7 @@ int
qemuDomainNamespaceSetupMemory(virDomainObjPtr vm, qemuDomainNamespaceSetupMemory(virDomainObjPtr vm,
virDomainMemoryDefPtr mem) virDomainMemoryDefPtr mem)
{ {
g_auto(GStrv) paths = NULL; g_autoptr(virGSListString) paths = NULL;
if (!qemuDomainNamespaceEnabled(vm, QEMU_DOMAIN_NS_MOUNT)) if (!qemuDomainNamespaceEnabled(vm, QEMU_DOMAIN_NS_MOUNT))
return 0; return 0;
@ -1498,7 +1494,7 @@ qemuDomainNamespaceSetupMemory(virDomainObjPtr vm,
if (qemuDomainSetupMemory(mem, &paths) < 0) if (qemuDomainSetupMemory(mem, &paths) < 0)
return -1; return -1;
if (qemuNamespaceMknodPaths(vm, (const char **) paths) < 0) if (qemuNamespaceMknodPaths(vm, paths) < 0)
return -1; return -1;
return 0; return 0;
@ -1509,7 +1505,7 @@ int
qemuDomainNamespaceTeardownMemory(virDomainObjPtr vm, qemuDomainNamespaceTeardownMemory(virDomainObjPtr vm,
virDomainMemoryDefPtr mem) virDomainMemoryDefPtr mem)
{ {
g_auto(GStrv) paths = NULL; g_autoptr(virGSListString) paths = NULL;
if (!qemuDomainNamespaceEnabled(vm, QEMU_DOMAIN_NS_MOUNT)) if (!qemuDomainNamespaceEnabled(vm, QEMU_DOMAIN_NS_MOUNT))
return 0; return 0;
@ -1517,7 +1513,7 @@ qemuDomainNamespaceTeardownMemory(virDomainObjPtr vm,
if (qemuDomainSetupMemory(mem, &paths) < 0) if (qemuDomainSetupMemory(mem, &paths) < 0)
return -1; return -1;
if (qemuNamespaceUnlinkPaths(vm, (const char **) paths) < 0) if (qemuNamespaceUnlinkPaths(vm, paths) < 0)
return -1; return -1;
return 0; return 0;
@ -1528,7 +1524,7 @@ int
qemuDomainNamespaceSetupChardev(virDomainObjPtr vm, qemuDomainNamespaceSetupChardev(virDomainObjPtr vm,
virDomainChrDefPtr chr) virDomainChrDefPtr chr)
{ {
g_auto(GStrv) paths = NULL; g_autoptr(virGSListString) paths = NULL;
if (!qemuDomainNamespaceEnabled(vm, QEMU_DOMAIN_NS_MOUNT)) if (!qemuDomainNamespaceEnabled(vm, QEMU_DOMAIN_NS_MOUNT))
return 0; return 0;
@ -1536,7 +1532,7 @@ qemuDomainNamespaceSetupChardev(virDomainObjPtr vm,
if (qemuDomainSetupChardev(vm->def, chr, &paths) < 0) if (qemuDomainSetupChardev(vm->def, chr, &paths) < 0)
return -1; return -1;
if (qemuNamespaceMknodPaths(vm, (const char **) paths) < 0) if (qemuNamespaceMknodPaths(vm, paths) < 0)
return -1; return -1;
return 0; return 0;
@ -1547,7 +1543,7 @@ int
qemuDomainNamespaceTeardownChardev(virDomainObjPtr vm, qemuDomainNamespaceTeardownChardev(virDomainObjPtr vm,
virDomainChrDefPtr chr) virDomainChrDefPtr chr)
{ {
g_auto(GStrv) paths = NULL; g_autoptr(virGSListString) paths = NULL;
if (!qemuDomainNamespaceEnabled(vm, QEMU_DOMAIN_NS_MOUNT)) if (!qemuDomainNamespaceEnabled(vm, QEMU_DOMAIN_NS_MOUNT))
return 0; return 0;
@ -1555,7 +1551,7 @@ qemuDomainNamespaceTeardownChardev(virDomainObjPtr vm,
if (qemuDomainSetupChardev(vm->def, chr, &paths) < 0) if (qemuDomainSetupChardev(vm->def, chr, &paths) < 0)
return -1; return -1;
if (qemuNamespaceUnlinkPaths(vm, (const char **) paths) < 0) if (qemuNamespaceUnlinkPaths(vm, paths) < 0)
return -1; return -1;
return 0; return 0;
@ -1566,7 +1562,7 @@ int
qemuDomainNamespaceSetupRNG(virDomainObjPtr vm, qemuDomainNamespaceSetupRNG(virDomainObjPtr vm,
virDomainRNGDefPtr rng) virDomainRNGDefPtr rng)
{ {
g_auto(GStrv) paths = NULL; g_autoptr(virGSListString) paths = NULL;
if (!qemuDomainNamespaceEnabled(vm, QEMU_DOMAIN_NS_MOUNT)) if (!qemuDomainNamespaceEnabled(vm, QEMU_DOMAIN_NS_MOUNT))
return 0; return 0;
@ -1574,7 +1570,7 @@ qemuDomainNamespaceSetupRNG(virDomainObjPtr vm,
if (qemuDomainSetupRNG(rng, &paths) < 0) if (qemuDomainSetupRNG(rng, &paths) < 0)
return -1; return -1;
if (qemuNamespaceMknodPaths(vm, (const char **) paths) < 0) if (qemuNamespaceMknodPaths(vm, paths) < 0)
return -1; return -1;
return 0; return 0;
@ -1585,7 +1581,7 @@ int
qemuDomainNamespaceTeardownRNG(virDomainObjPtr vm, qemuDomainNamespaceTeardownRNG(virDomainObjPtr vm,
virDomainRNGDefPtr rng) virDomainRNGDefPtr rng)
{ {
g_auto(GStrv) paths = NULL; g_autoptr(virGSListString) paths = NULL;
if (!qemuDomainNamespaceEnabled(vm, QEMU_DOMAIN_NS_MOUNT)) if (!qemuDomainNamespaceEnabled(vm, QEMU_DOMAIN_NS_MOUNT))
return 0; return 0;
@ -1593,7 +1589,7 @@ qemuDomainNamespaceTeardownRNG(virDomainObjPtr vm,
if (qemuDomainSetupRNG(rng, &paths) < 0) if (qemuDomainSetupRNG(rng, &paths) < 0)
return -1; return -1;
if (qemuNamespaceUnlinkPaths(vm, (const char **) paths) < 0) if (qemuNamespaceUnlinkPaths(vm, paths) < 0)
return -1; return -1;
return 0; return 0;
@ -1604,7 +1600,7 @@ int
qemuDomainNamespaceSetupInput(virDomainObjPtr vm, qemuDomainNamespaceSetupInput(virDomainObjPtr vm,
virDomainInputDefPtr input) virDomainInputDefPtr input)
{ {
g_auto(GStrv) paths = NULL; g_autoptr(virGSListString) paths = NULL;
if (!qemuDomainNamespaceEnabled(vm, QEMU_DOMAIN_NS_MOUNT)) if (!qemuDomainNamespaceEnabled(vm, QEMU_DOMAIN_NS_MOUNT))
return 0; return 0;
@ -1612,7 +1608,7 @@ qemuDomainNamespaceSetupInput(virDomainObjPtr vm,
if (qemuDomainSetupInput(input, &paths) < 0) if (qemuDomainSetupInput(input, &paths) < 0)
return -1; return -1;
if (qemuNamespaceMknodPaths(vm, (const char **) paths) < 0) if (qemuNamespaceMknodPaths(vm, paths) < 0)
return -1; return -1;
return 0; return 0;
} }
@ -1622,7 +1618,7 @@ int
qemuDomainNamespaceTeardownInput(virDomainObjPtr vm, qemuDomainNamespaceTeardownInput(virDomainObjPtr vm,
virDomainInputDefPtr input) virDomainInputDefPtr input)
{ {
g_auto(GStrv) paths = NULL; g_autoptr(virGSListString) paths = NULL;
if (!qemuDomainNamespaceEnabled(vm, QEMU_DOMAIN_NS_MOUNT)) if (!qemuDomainNamespaceEnabled(vm, QEMU_DOMAIN_NS_MOUNT))
return 0; return 0;
@ -1630,7 +1626,7 @@ qemuDomainNamespaceTeardownInput(virDomainObjPtr vm,
if (qemuDomainSetupInput(input, &paths) < 0) if (qemuDomainSetupInput(input, &paths) < 0)
return -1; return -1;
if (qemuNamespaceUnlinkPaths(vm, (const char **) paths) < 0) if (qemuNamespaceUnlinkPaths(vm, paths) < 0)
return -1; return -1;
return 0; return 0;