On Fri, 2026-08-28 at 10:32 +0200, Jiri Slaby wrote:
> On 28. 08. 26, 9:46, Jiri Slaby wrote:
> > What helps is indeed the revert back to:
> > 
> > --- a/drivers/gpu/drm/qxl/qxl_release.c
> > +++ b/drivers/gpu/drm/qxl/qxl_release.c
> > @@ -147,7 +147,7 @@ qxl_release_free(struct qxl_device *qdev,
> >          idr_remove(&qdev->release_idr, release->id);
> >          spin_unlock(&qdev->release_idr_lock);
> > 
> > -       if (dma_fence_was_initialized(&release->base)) {
> > +       if (release->base.ops) {
> 
> Crap, the flags simple got garbage from previous freed buffer, so:
> -       release = kmalloc(size, GFP_KERNEL);
> +       release = kzalloc(size, GFP_KERNEL);
> 
> fixes this of course. Patch coming.
> 
> Now, the ops and initialized are either both set or unset:
> qxl_release_free 1: release->base.ops=0x0 initialized=0 id=6 type=2
> qxl_release_free 1: release->base.ops=qxl_fence_ops initialized=1 id=2 
> type=0
> 
> Unlike before.
> 
> FTR release->base.ops were NULLed after that kmalloc. Unlike 
> release->base.flags.

You're saying that QXL is re-using that fence if it were uninitialized?

P.

Reply via email to