]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu_driver.c: Coverity fix in qemuNodeDeviceDetachFlags()
authorDaniel Henrique Barboza <danielhb413@gmail.com>
Thu, 18 Feb 2021 12:21:06 +0000 (09:21 -0300)
committerDaniel Henrique Barboza <danielhb413@gmail.com>
Thu, 18 Feb 2021 13:06:30 +0000 (10:06 -0300)
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 <jferlan@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
src/qemu/qemu_driver.c

index f1035a536e08e886f8bca6ec3a63bf59a6cb06ca..b9bbdf8d483159539ff3fa3afabaab0e10643b46 100644 (file)
@@ -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() */