Re: [GIT PULL 11/23] hw/display/virtio-gpu: Avoid leaking migration blocker

Peter Maydell <[email protected]>
Newsgroups gmane.comp.emulators.qemu
Message-ID <CAFEAcA_hVqYGFWGMnWEYcA9to29SFvpzseo-zTv-Pq+uLdyMiQ@mail.gmail.com>
On Mon, 27 Jul 2026 at 12:53, Marc-André Lureau
<[email protected]> wrote:
>
> From: Akihiko Odaki <[email protected]>
>
> virtio_gpu_base_device_realize() leaks a migration blocker if a
> check of the output list fails after adding one. Perform the check
> before adding a migration blocker to avoid the leak. This also
> simplifies the code by merging two loops.
>
> Fixes: d3a4969dc5ac ("Support per-head resolutions with virtio-gpu")
> Signed-off-by: Akihiko Odaki <[email protected]>
> Reviewed-by: Marc-André Lureau <[email protected]>
> Message-ID: <[email protected]>
> ---
>  hw/display/virtio-gpu-base.c | 37 ++++++++++++++++---------------------
>  1 file changed, 16 insertions(+), 21 deletions(-)



> @@ -207,6 +212,17 @@ virtio_gpu_base_device_realize(DeviceState *qdev,
>                         node->value->name, EDID_NAME_MAX_LENGTH);
>              return false;
>          }
> +        if (node->value->has_xres != node->value->has_yres) {
> +            error_setg(errp,
> +                       "must set both outputs[%zd].xres and outputs[%zd].yres",
> +                       output_idx, output_idx);
> +            return false;
> +        }
> +        if (node->value->has_xres && node->value->has_yres) {
> +            g->enabled_output_bitmask |= (1 << output_idx);
> +            g->req_state[output_idx].width = node->value->xres;
> +            g->req_state[output_idx].height = node->value->yres;
> +        }

Hi; Coverity points out an issue with this change (CID 1664272):
just before this added code there is an existing check:

        if (node->value && node->value->name &&
            strlen(node->value->name) > EDID_NAME_MAX_LENGTH) {
            ...
        }

That check assumes that node->value can be NULL, but this added
code assumes node->value is not NULL and unconditionally
dereferences it. Which is correct ?

thanks
-- PMM
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.