Re: [libvirt PATCHv3 for 9.4.0] conf: node_device: use separate variables for parsing integers

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 5/31/23 20:50, Ján Tomko wrote:
> In virNodeDeviceGetSCSIHostCaps, there is a pattern of reusing
> a tmp value and stealing the pointer.
> 
> But in two case it is not stolen. Use separate variables for them
> to avoid mixing autofree with manual free() calls.
> 
> This fixes the memory leak of the "max_npiv_vports" string.
> (The other gets freed anyway because it was the last use of "tmp"
>  in the function")
> 
> Fixes: 8a0cb5f73ade3900546718eabe70cb064c6bd22c
> Signed-off-by: Ján Tomko <jtomko@xxxxxxxxxx>
> ---
> v3: fix "declaration after statement" warning
>  src/conf/node_device_conf.c | 15 +++++++++------
>  1 file changed, 9 insertions(+), 6 deletions(-)
> 
> diff --git a/src/conf/node_device_conf.c b/src/conf/node_device_conf.c
> index fcee9c027c..172223225f 100644
> --- a/src/conf/node_device_conf.c
> +++ b/src/conf/node_device_conf.c
> @@ -2857,29 +2857,32 @@ virNodeDeviceGetSCSIHostCaps(virNodeDevCapSCSIHost *scsi_host)
>      }
>  
>      if (virVHBAIsVportCapable(NULL, scsi_host->host)) {
> +        g_autofree char *max_vports = NULL;
> +        g_autofree char *vports = NULL;
> +
>          scsi_host->flags |= VIR_NODE_DEV_CAP_FLAG_HBA_VPORT_OPS;
>  
> -        if (!(tmp = virVHBAGetConfig(NULL, scsi_host->host,
> +        if (!(max_vports = virVHBAGetConfig(NULL, scsi_host->host,
>                                       "max_npiv_vports"))) {

Any reason to not align this second argument?

>              VIR_WARN("Failed to read max_npiv_vports for host%d",
>                       scsi_host->host);
>              goto cleanup;
>          }
>  
> -        if (virStrToLong_i(tmp, NULL, 10, &scsi_host->max_vports) < 0) {
> -            VIR_WARN("Failed to parse value of max_npiv_vports '%s'", tmp);
> +        if (virStrToLong_i(max_vports, NULL, 10, &scsi_host->max_vports) < 0) {
> +            VIR_WARN("Failed to parse value of max_npiv_vports '%s'", max_vports);
>              goto cleanup;
>          }
>  
> -        if (!(tmp = virVHBAGetConfig(NULL, scsi_host->host,
> +        if (!(vports = virVHBAGetConfig(NULL, scsi_host->host,
>                                        "npiv_vports_inuse"))) {

Same question here.

>              VIR_WARN("Failed to read npiv_vports_inuse for host%d",
>                       scsi_host->host);
>              goto cleanup;
>          }
>  
> -        if (virStrToLong_i(tmp, NULL, 10, &scsi_host->vports) < 0) {
> -            VIR_WARN("Failed to parse value of npiv_vports_inuse '%s'", tmp);
> +        if (virStrToLong_i(vports, NULL, 10, &scsi_host->vports) < 0) {
> +            VIR_WARN("Failed to parse value of npiv_vports_inuse '%s'", vports);
>              goto cleanup;
>          }
>      }

Reviewed-by: Michal Privoznik <mprivozn@xxxxxxxxxx>

Michal




[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux