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 | 12 ------------
src/qemu/qemu_domain.c | 9 +++++++++
src/qemu/qemu_hotplug.c | 7 -------
3 files changed, 9 insertions(+), 19 deletions(-)
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index a1a9e91e49..0f45a25038 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -9708,18 +9708,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 4c4a9a428d..a3431696af 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -4165,6 +4165,7 @@ static int
qemuDomainDeviceDefValidateDisk(const virDomainDiskDef *disk,
virQEMUCapsPtr qemuCaps)
{
+ const char *driverName;
virStorageSourcePtr n;
if (disk->src->shared && !disk->src->readonly) {
@@ -4183,6 +4184,14 @@ qemuDomainDeviceDefValidateDisk(const virDomainDiskDef *disk,
}
}
+ if ((driverName = virDomainDiskGetDriver(disk)) &&
+ 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;
--
2.16.2
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
On Wed, Apr 18, 2018 at 12:55:39PM +0200, Peter Krempa wrote: >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 | 12 ------------ > src/qemu/qemu_domain.c | 9 +++++++++ > src/qemu/qemu_hotplug.c | 7 ------- > 3 files changed, 9 insertions(+), 19 deletions(-) > >diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c >index a1a9e91e49..0f45a25038 100644 >--- a/src/qemu/qemu_command.c >+++ b/src/qemu/qemu_command.c >@@ -9708,18 +9708,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 4c4a9a428d..a3431696af 100644 >--- a/src/qemu/qemu_domain.c >+++ b/src/qemu/qemu_domain.c >@@ -4165,6 +4165,7 @@ static int > qemuDomainDeviceDefValidateDisk(const virDomainDiskDef *disk, > virQEMUCapsPtr qemuCaps) > { >+ const char *driverName; Consider initializing the variable here > virStorageSourcePtr n; > > if (disk->src->shared && !disk->src->readonly) { >@@ -4183,6 +4184,14 @@ qemuDomainDeviceDefValidateDisk(const virDomainDiskDef *disk, > } > } > >+ if ((driverName = virDomainDiskGetDriver(disk)) && >+ STRNEQ(driverName, "qemu")) { and/or using STRNEQ_NULLABLE here. >+ 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; Regardless Reviewed-by: Ján Tomko <jtomko@redhat.com> Jano -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
On Wed, Apr 18, 2018 at 13:30:24 +0200, Ján Tomko wrote: > On Wed, Apr 18, 2018 at 12:55:39PM +0200, Peter Krempa wrote: > > 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 | 12 ------------ > > src/qemu/qemu_domain.c | 9 +++++++++ > > src/qemu/qemu_hotplug.c | 7 ------- > > 3 files changed, 9 insertions(+), 19 deletions(-) [...] > > diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c > > index 4c4a9a428d..a3431696af 100644 > > --- a/src/qemu/qemu_domain.c > > +++ b/src/qemu/qemu_domain.c > > @@ -4165,6 +4165,7 @@ static int > > qemuDomainDeviceDefValidateDisk(const virDomainDiskDef *disk, > > virQEMUCapsPtr qemuCaps) > > { > > + const char *driverName; > > Consider initializing the variable here Okay, I can do that but it's kind of pointless since it's always overwritten. > > > virStorageSourcePtr n; > > > > if (disk->src->shared && !disk->src->readonly) { > > @@ -4183,6 +4184,14 @@ qemuDomainDeviceDefValidateDisk(const virDomainDiskDef *disk, > > } > > } > > > > + if ((driverName = virDomainDiskGetDriver(disk)) && > > + STRNEQ(driverName, "qemu")) { > > and/or using STRNEQ_NULLABLE here. Umm why? It's guarded by checking of the assignment. -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
On Wed, Apr 18, 2018 at 02:54:24PM +0200, Peter Krempa wrote: >On Wed, Apr 18, 2018 at 13:30:24 +0200, Ján Tomko wrote: >> On Wed, Apr 18, 2018 at 12:55:39PM +0200, Peter Krempa wrote: >> > 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 | 12 ------------ >> > src/qemu/qemu_domain.c | 9 +++++++++ >> > src/qemu/qemu_hotplug.c | 7 ------- >> > 3 files changed, 9 insertions(+), 19 deletions(-) > >[...] > >> > diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c >> > index 4c4a9a428d..a3431696af 100644 >> > --- a/src/qemu/qemu_domain.c >> > +++ b/src/qemu/qemu_domain.c >> > @@ -4165,6 +4165,7 @@ static int >> > qemuDomainDeviceDefValidateDisk(const virDomainDiskDef *disk, >> > virQEMUCapsPtr qemuCaps) >> > { >> > + const char *driverName; >> >> Consider initializing the variable here > >Okay, I can do that but it's kind of pointless since it's always >overwritten. > Initializing to virDomainDiskGetDriver(disk); >> >> > virStorageSourcePtr n; >> > >> > if (disk->src->shared && !disk->src->readonly) { >> > @@ -4183,6 +4184,14 @@ qemuDomainDeviceDefValidateDisk(const virDomainDiskDef *disk, >> > } >> > } >> > >> > + if ((driverName = virDomainDiskGetDriver(disk)) && >> > + STRNEQ(driverName, "qemu")) { >> >> and/or using STRNEQ_NULLABLE here. > >Umm why? It's guarded by checking of the assignment. Jano -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
On Wed, Apr 18, 2018 at 15:13:26 +0200, Ján Tomko wrote: > On Wed, Apr 18, 2018 at 02:54:24PM +0200, Peter Krempa wrote: > > On Wed, Apr 18, 2018 at 13:30:24 +0200, Ján Tomko wrote: > > > On Wed, Apr 18, 2018 at 12:55:39PM +0200, Peter Krempa wrote: > > > > 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 | 12 ------------ > > > > src/qemu/qemu_domain.c | 9 +++++++++ > > > > src/qemu/qemu_hotplug.c | 7 ------- > > > > 3 files changed, 9 insertions(+), 19 deletions(-) > > > > [...] > > > > > > diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c > > > > index 4c4a9a428d..a3431696af 100644 > > > > --- a/src/qemu/qemu_domain.c > > > > +++ b/src/qemu/qemu_domain.c > > > > @@ -4165,6 +4165,7 @@ static int > > > > qemuDomainDeviceDefValidateDisk(const virDomainDiskDef *disk, > > > > virQEMUCapsPtr qemuCaps) > > > > { > > > > + const char *driverName; > > > > > > Consider initializing the variable here > > > > Okay, I can do that but it's kind of pointless since it's always > > overwritten. > > > > Initializing to virDomainDiskGetDriver(disk); aaah, right. STREQ_NULLABLE can't be used though, since apparently it's okay if it's left empty, at least according to other code -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
© 2016 - 2025 Red Hat, Inc.