Marc-André Lureau <[email protected]> writes: > Hi > > On Thu, Aug 27, 2026 at 8:11 PM Alex Bennée <[email protected]> wrote: >> >> [email protected] writes: >> >> > From: Marc-André Lureau <[email protected]> >> > >> > virtio_gpu_virgl_reset() does not free the bottom halves or timers >> > allocated by the previous virtio_gpu_virgl_init() call. A subsequent >> > virtio_gpu_virgl_init() overwrites the old pointers, leaking the >> > previous allocations. >> > >> > Fixes: bd9258917fbf ("virtio-gpu: Destroy virgl resources on virtio-gpu >> > reset") >> > Signed-off-by: Marc-André Lureau <[email protected]> >> > --- >> > hw/display/virtio-gpu-virgl.c | 6 ++++++ >> > 1 file changed, 6 insertions(+) >> > >> > diff --git a/hw/display/virtio-gpu-virgl.c b/hw/display/virtio-gpu-virgl.c >> > index 0b79aef8d1f5..8bf6417c6514 100644 >> > --- a/hw/display/virtio-gpu-virgl.c >> > +++ b/hw/display/virtio-gpu-virgl.c >> > @@ -1425,6 +1425,7 @@ void virtio_gpu_virgl_reset_scanout(VirtIOGPU *g) >> > >> > static bool virtio_gpu_virgl_reset(VirtIOGPU *g) >> > { >> > + VirtIOGPUGL *gl = VIRTIO_GPU_GL(g); >> > struct virtio_gpu_simple_resource *res, *tmp; >> > >> > /* >> > @@ -1443,6 +1444,11 @@ static bool virtio_gpu_virgl_reset(VirtIOGPU *g) >> > >> > virtio_gpu_virgl_reset_async_fences(g); >> > >> > + g_clear_pointer(&gl->cmdq_resume_bh, qemu_bh_delete); >> > + g_clear_pointer(&gl->async_fence_bh, qemu_bh_delete); >> > + g_clear_pointer(&gl->print_stats, timer_free); >> > + g_clear_pointer(&gl->fence_poll, timer_free); >> > + >> >> Don't we need some ptr checks in virtio_gpu_gl_device_unrealize so a >> reset followed by an unplug doesn't causes segs chasing now NULL >> pointers? > > Good point, actually we should be safe, since render_state < RS_INITED. > > But those qemu_bh_delete().. can we make it safe to call with NULL?
That seems sane as it will be on the exit path. I wouldn't tolerate NULL for any of the other qemu_bh functions though. > timer_free() was fixed already. > >> >> >> > return true; >> > } >> >> -- >> Alex Bennée >> Virtualisation Tech Lead @ Linaro >> -- Alex Bennée Virtualisation Tech Lead @ Linaro
