[PATCH] drm/syncobj: Don't leak fences when WAIT_FOR_SUBMIT is set

Chris Wilson chris at chris-wilson.co.uk
Wed Sep 26 09:50:42 UTC 2018


Quoting Jason Ekstrand (2018-09-26 10:43:59)
> On Wed, Sep 26, 2018 at 3:18 AM Chris Wilson <chris at chris-wilson.co.uk> wrote:
> 
>     Quoting Jason Ekstrand (2018-09-26 08:17:03)
>     > We attempt to get fences earlier in the hopes that everything will
>     > already have fences and no callbacks will be needed.  If we do succeed
>     > in getting a fence, getting one a second time will result in a duplicate
>     > ref with no unref.  This is causing memory leaks in Vulkan applications
>     > that create a lot of fences; playing for a few hours can, apparently,
>     > bring down the system.
>     >
>     > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=107899
>     > Signed-off-by: Jason Ekstrand <jason at jlekstrand.net>
>     > Cc: stable at vger.kernel.org
>     > ---
>     >  drivers/gpu/drm/drm_syncobj.c | 5 +++++
>     >  1 file changed, 5 insertions(+)
>     >
>     > diff --git a/drivers/gpu/drm/drm_syncobj.c b/drivers/gpu/drm/
>     drm_syncobj.c
>     > index adb3cb27d31e..759278fef35a 100644
>     > --- a/drivers/gpu/drm/drm_syncobj.c
>     > +++ b/drivers/gpu/drm/drm_syncobj.c
>     > @@ -97,6 +97,8 @@ static int drm_syncobj_fence_get_or_add_callback(struct
>     drm_syncobj *syncobj,
>     >  {
>     >         int ret;
>>     > +       WARN_ON(*fence);
> 
>     I would have just put if (*fence) return; since the function is tied to
>     the array_wait implementation.
> 
> 
> I considered doing that but marginally liked this better.  If you have a
> preference, I'm happy to change itl.

Patch works, the difference is insignificant, land the patch and close
the bug.
-Chris


More information about the dri-devel mailing list