[libvirt] [PATCH] Fix warning about using an uninitialized next_unit value

Osier Yang jyang at redhat.com
Mon Jun 3 10:32:15 UTC 2013


On 03/06/13 18:22, Jiri Denemark wrote:
> Using an uninitialized value and a bool saying if the value is valid may
> confuse compilators.
> ---
>   src/conf/domain_conf.c | 24 +++++++++++++-----------
>   1 file changed, 13 insertions(+), 11 deletions(-)
>
> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> index 46d49a2..6dc8cf3 100644
> --- a/src/conf/domain_conf.c
> +++ b/src/conf/domain_conf.c
> @@ -3883,26 +3883,28 @@ virDomainHostdevAssignAddress(virDomainXMLOptionPtr xmlopt,
>                                 virDomainDefPtr def,
>                                 virDomainHostdevDefPtr hostdev)
>   {
> -    int next_unit;
> +    int next_unit = 0;
>       unsigned nscsi_controllers = 0;
> -    bool found = false;
>       int i;
> +    int ret;
>   
>       if (hostdev->source.subsys.type != VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI)
>           return -1;
>   
> -    for (i = 0; i < def->ncontrollers && !found; i++) {
> +    for (i = 0; i < def->ncontrollers; i++) {
>           if (def->controllers[i]->type != VIR_DOMAIN_CONTROLLER_TYPE_SCSI)
>               continue;
>   
>           nscsi_controllers++;
> -        next_unit = virDomainControllerSCSINextUnit(def,
> -                                                    xmlopt->config.hasWideScsiBus ?
> -                                                    SCSI_WIDE_BUS_MAX_CONT_UNIT :
> -                                                    SCSI_NARROW_BUS_MAX_CONT_UNIT,
> -                                                    def->controllers[i]->idx);
> -        if (next_unit >= 0)
> -            found = true;
> +        ret = virDomainControllerSCSINextUnit(def,
> +                                              xmlopt->config.hasWideScsiBus ?
> +                                              SCSI_WIDE_BUS_MAX_CONT_UNIT :
> +                                              SCSI_NARROW_BUS_MAX_CONT_UNIT,
> +                                              def->controllers[i]->idx);
> +        if (ret >= 0) {
> +            next_unit = ret;
> +            break;
> +        }
>       }
>   
>       hostdev->info->type = VIR_DOMAIN_DEVICE_ADDRESS_TYPE_DRIVE;
> @@ -3912,7 +3914,7 @@ virDomainHostdevAssignAddress(virDomainXMLOptionPtr xmlopt,
>                                              nscsi_controllers;

This statement still uses the bool variable "found":

     hostdev->info->addr.drive.controller = found ?
                                            def->controllers[i - 1]->idx :
                                            nscsi_controllers;


And the controller index "i - 1" above should be changed to "i" instead. 
Since
the second expression of the for loop was changed.

Osier




More information about the libvir-list mailing list