[PATCH] drm/amdgpu: fix fence slab teardown

Alex Deucher alexdeucher at gmail.com
Mon Oct 24 16:31:31 UTC 2016


On Sun, Oct 23, 2016 at 2:31 PM, Grazvydas Ignotas <notasas at gmail.com> wrote:
> To free fences, call_rcu() is used, which calls amdgpu_fence_free()
> after a grace period. During teardown, there is no guarantee all
> callbacks have finished, so amdgpu_fence_slab may be destroyed before
> all fences have been freed. If we are lucky, this results in some slab
> warnings, if not, we get a crash in one of rcu threads because callback
> is called after amdgpu has already been unloaded.
>
> Fix it with a rcu_barrier().
>
> Fixes: b44135351a3a ("drm/amdgpu: RCU protected amdgpu_fence_release")
> Signed-off-by: Grazvydas Ignotas <notasas at gmail.com>


Applied.  Thanks!

Alex


> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c | 1 +
>  1 file changed, 1 insertion(+)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c
> index 3a2e42f..77b34ec 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c
> @@ -68,6 +68,7 @@ int amdgpu_fence_slab_init(void)
>
>  void amdgpu_fence_slab_fini(void)
>  {
> +       rcu_barrier();
>         kmem_cache_destroy(amdgpu_fence_slab);
>  }
>  /*
> --
> 2.7.4
>
> _______________________________________________
> amd-gfx mailing list
> amd-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx


More information about the dri-devel mailing list