[PATCH 1/4] virpci: Avoid Clang false positive

Michal Privoznik mprivozn at redhat.com
Wed Aug 25 12:54:56 UTC 2021

The virPCIDeviceIsBehindSwitchLackingACS() function checks
whether given PCI device is not behind a switch that lacks ACS.
It does so by starting at given device and traversing up, one
parent at time towards the root. The parent device is obtained
via virPCIDeviceGetParent() which allocates new virPCIDevice
structure. For freeing the structure we use g_autoptr() and a
temporary variable @tmp. However, Clang fails to understand our
clever algorithm and complains that the variable is set but never
used. This is obviously a false positive, but using a small trick
we can shut Clang up.

Signed-off-by: Michal Privoznik <mprivozn at redhat.com>
 src/util/virpci.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/util/virpci.c b/src/util/virpci.c
index 915a4903ca..f307580a53 100644
--- a/src/util/virpci.c
+++ b/src/util/virpci.c
@@ -2150,8 +2150,8 @@ virPCIDeviceIsBehindSwitchLackingACS(virPCIDevice *dev)
                 return 1;
-        tmp = parent;
-        ret = virPCIDeviceGetParent(parent, &parent);
+        tmp = g_steal_pointer(&parent);
+        ret = virPCIDeviceGetParent(tmp, &parent);
         if (ret < 0)
             return -1;
     } while (parent);

More information about the libvir-list mailing list