]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: Move disk driver name validation into disk validation callback
authorPeter Krempa <pkrempa@redhat.com>
Tue, 10 Apr 2018 14:38:22 +0000 (16:38 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Wed, 18 Apr 2018 14:14:13 +0000 (16:14 +0200)
There were two places where we'd check this independently. Move it to
the disk definition validation callback. This also fixes possible use of
NULL in a printf for network storage.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
src/qemu/qemu_command.c
src/qemu/qemu_domain.c
src/qemu/qemu_hotplug.c

index 66ed1383c2b833f9d41a1978955d021cbe60bc4f..238c6ed6207659d472d40ecfe4ddac1a416dbd77 100644 (file)
@@ -9719,18 +9719,6 @@ qemuBuildCommandLineValidate(virQEMUDriverPtr driver,
         return -1;
     }
 
-    for (i = 0; i < def->ndisks; i++) {
-        virDomainDiskDefPtr disk = def->disks[i];
-
-        if (disk->src->driverName != NULL &&
-            STRNEQ(disk->src->driverName, "qemu")) {
-            virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
-                           _("unsupported driver name '%s' for disk '%s'"),
-                           disk->src->driverName, disk->src->path);
-            return -1;
-        }
-    }
-
     return 0;
 }
 
index 672f08b442614f679303bbfcfccf89444beec469..21897cb47ae147ac8f8d51942bb06562199118bc 100644 (file)
@@ -4142,6 +4142,7 @@ static int
 qemuDomainDeviceDefValidateDisk(const virDomainDiskDef *disk,
                                 virQEMUCapsPtr qemuCaps)
 {
+    const char *driverName = virDomainDiskGetDriver(disk);
     virStorageSourcePtr n;
 
     if (disk->src->shared && !disk->src->readonly) {
@@ -4160,6 +4161,13 @@ qemuDomainDeviceDefValidateDisk(const virDomainDiskDef *disk,
         }
     }
 
+    if (driverName && STRNEQ(driverName, "qemu")) {
+        virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
+                       _("unsupported driver name '%s' for disk '%s'"),
+                       driverName, disk->dst);
+        return -1;
+    }
+
     for (n = disk->src; virStorageSourceIsBacking(n); n = n->backingStore) {
         if (qemuDomainValidateStorageSource(n, qemuCaps) < 0)
             return -1;
index 8d3191f9718dd8b586e05f6b6009d99dcbed5a89..df9e8aa716799b0ff7e8248d91e7a5c36b5cb071 100644 (file)
@@ -699,13 +699,6 @@ qemuDomainAttachDeviceDiskLive(virQEMUDriverPtr driver,
     virDomainDiskDefPtr orig_disk = NULL;
     int ret = -1;
 
-    if (STRNEQ_NULLABLE(virDomainDiskGetDriver(disk), "qemu")) {
-        virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
-                       _("unsupported driver name '%s' for disk '%s'"),
-                       virDomainDiskGetDriver(disk), disk->dst);
-        goto cleanup;
-    }
-
     if (virDomainDiskTranslateSourcePool(disk) < 0)
         goto cleanup;