Hi,

> > +    virtio_gpu_cleanup_mapping_iov(res_iovs, num_iovs);
> 
> Is res_iovs leaked here?

Oops, yes.  Moving the iov release to virtio_gpu_cleanup_mapping_iov (so
things is symmetrical to virtio_gpu_create_mapping_iov which allocates
it), that'll fix it.

> > +    pixels = s->current_cursor->width * s->current_cursor->height;
> > +    memcpy(s->current_cursor->data, data, pixels * sizeof(uint32_t));
> > +    free(data);
> 
> width and height are unused; should they be compared against
> s->current_cursor->{width,height} to spot discrepancies?

Added.

> > +static void virtio_gpu_set_features(VirtIODevice *vdev, uint64_t features)
> > +{
> > +    static const uint32_t virgl = (1 << VIRTIO_GPU_FEATURE_VIRGL);
> > +    VirtIOGPU *g = VIRTIO_GPU(vdev);
> > +
> > +    g->use_virgl_renderer = ((features & virgl) == virgl);
> 
> Could a non-well-behaving guest just set this feature bit even if it was
> not reported by virtio_gpu_get_features() because it has been disabled?

I'm pretty sure virtio core doesn't allow this.

cheers,
  Gerd



Reply via email to