Commit 25ed6e4b authored by Grazvydas Ignotas's avatar Grazvydas Ignotas Committed by Greg Kroah-Hartman

drm/amdgpu: fix fence slab teardown

commit 0f10425e upstream.

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: b4413535 ("drm/amdgpu: RCU protected amdgpu_fence_release")
Acked-by: default avatarChunming Zhou <david1.zhou@amd.com>
Reviewed-by: default avatarChristian König <christian.koenig@amd.com>
Signed-off-by: default avatarGrazvydas Ignotas <notasas@gmail.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent de5e9aa7
...@@ -68,6 +68,7 @@ int amdgpu_fence_slab_init(void) ...@@ -68,6 +68,7 @@ int amdgpu_fence_slab_init(void)
void amdgpu_fence_slab_fini(void) void amdgpu_fence_slab_fini(void)
{ {
rcu_barrier();
kmem_cache_destroy(amdgpu_fence_slab); kmem_cache_destroy(amdgpu_fence_slab);
} }
/* /*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment