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

Peter Krempa pkrempa at redhat.com
Wed Aug 25 13:28:04 UTC 2021


Please pick a better summary.

Something along:

virpci: Clarify lifetime of temporary object


On Wed, Aug 25, 2021 at 14:54:56 +0200, Michal Privoznik wrote:
> 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);

Reviewed-by: Peter Krempa <pkrempa at redhat.com>




More information about the libvir-list mailing list