From: Peter Krempa Date: Tue, 10 Apr 2018 14:38:22 +0000 (+0200) Subject: qemu: Move disk driver name validation into disk validation callback X-Git-Tag: v4.3.0-rc1~173 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ca2943ad9a9a4c0829fac793be9849996d38b5ea;p=thirdparty%2Flibvirt.git qemu: Move disk driver name validation into disk validation callback 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 --- diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 66ed1383c2..238c6ed620 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -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; } diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 672f08b442..21897cb47a 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -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; diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c index 8d3191f971..df9e8aa716 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -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;