From: Daniel Henrique Barboza Date: Thu, 18 Feb 2021 12:21:06 +0000 (-0300) Subject: qemu_driver.c: Coverity fix in qemuNodeDeviceDetachFlags() X-Git-Tag: v7.1.0-rc1~55 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d9977cc0f185d3693bd3197d2b009733a602d39c;p=thirdparty%2Flibvirt.git qemu_driver.c: Coverity fix in qemuNodeDeviceDetachFlags() Commit 76f47889326c4 made qemuNodeDeviceDetachFlags() unusable due to an 'if then else if' chain that will always results in a 'return -1', regardless of 'driverName' input. Found by Coverity. Fixes: 76f47889326c45d2732711bc6dd5751aaf6e5194 Reported-by: John Ferlan Reviewed-by: John Ferlan Reviewed-by: Ján Tomko Signed-off-by: Daniel Henrique Barboza --- diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index f1035a536e..b9bbdf8d48 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -11998,7 +11998,6 @@ qemuNodeDeviceDetachFlags(virNodeDevicePtr dev, unsigned int flags) { virQEMUDriverPtr driver = dev->conn->privateData; - bool vfio = qemuHostdevHostSupportsPassthroughVFIO(); virHostdevManagerPtr hostdev_mgr = driver->hostdevMgr; virCheckFlags(0, -1); @@ -12006,22 +12005,27 @@ qemuNodeDeviceDetachFlags(virNodeDevicePtr dev, if (!driverName) driverName = "vfio"; - if (STREQ(driverName, "vfio") && !vfio) { - virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED, "%s", - _("VFIO device assignment is currently not " - "supported on this system")); - return -1; - } else if (STREQ(driverName, "kvm")) { + /* Only the 'vfio' driver is supported and a special error message for + * the previously supported 'kvm' driver is provided below. */ + if (STRNEQ(driverName, "vfio") && STRNEQ(driverName, "kvm")) { + virReportError(VIR_ERR_INVALID_ARG, + _("unknown driver name '%s'"), driverName); + return -1; + } + + if (STREQ(driverName, "kvm")) { virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED, "%s", _("KVM device assignment is no longer " "supported on this system")); return -1; - } else { - virReportError(VIR_ERR_INVALID_ARG, - _("unknown driver name '%s'"), driverName); - return -1; } + if (!qemuHostdevHostSupportsPassthroughVFIO()) { + virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED, "%s", + _("VFIO device assignment is currently not " + "supported on this system")); + return -1; + } /* virNodeDeviceDetachFlagsEnsureACL() is being called by * virDomainDriverNodeDeviceDetachFlags() */