Hi,

> +void modify_boot_device_path(int32_t bootindex, DeviceState *dev,
> +                          const char *suffix)
> +{
> +    FWBootEntry *node, *i;
> +
> +    assert(dev != NULL || suffix != NULL);
> +
> +    QTAILQ_FOREACH(i, &fw_boot_order, link) {
> +        if (i->bootindex == bootindex) {
> +            qerror_report(ERROR_CLASS_GENERIC_ERROR,
> +               "The bootindex %d has already been used", bootindex);
> +            return;
> +        }
> +        /* delete the same original dev */
> +        if (i->dev->id && !strcmp(i->dev->id, dev->id)) {
> +            QTAILQ_REMOVE(&fw_boot_order, i, link);

Ok ...

> +            g_free(i->suffix);
> +            g_free(i);

... but you should free the old entry later ...

> +
> +            break;
> +        }
> +    }
> +
> +    if (bootindex >= 0) {
> +        node = g_malloc0(sizeof(FWBootEntry));
> +        node->bootindex = bootindex;
> +        node->suffix = g_strdup(suffix);

... because you can just copy the suffix from the old entry here,
instead of expecting the caller pass it in.

cheers,
  Gerd



Reply via email to