mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-05 11:01:06 -04:00
drm/nouveau: Make fences take a weak channel reference.
Fences didn't increment the channel reference count, and the fenced channel could go away at any time. Fixes a potential race in nouveau_fence_update(). Signed-off-by: Francisco Jerez <currojerez@riseup.net> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
This commit is contained in:
committed by
Ben Skeggs
parent
f091a3d403
commit
2a6789ae5e
@@ -64,6 +64,7 @@ nouveau_fence_del(struct kref *ref)
|
||||
struct nouveau_fence *fence =
|
||||
container_of(ref, struct nouveau_fence, refcount);
|
||||
|
||||
nouveau_channel_ref(NULL, &fence->channel);
|
||||
kfree(fence);
|
||||
}
|
||||
|
||||
@@ -113,7 +114,7 @@ nouveau_fence_new(struct nouveau_channel *chan, struct nouveau_fence **pfence,
|
||||
if (!fence)
|
||||
return -ENOMEM;
|
||||
kref_init(&fence->refcount);
|
||||
fence->channel = chan;
|
||||
nouveau_channel_ref(chan, &fence->channel);
|
||||
|
||||
if (emit)
|
||||
ret = nouveau_fence_emit(fence);
|
||||
|
||||
Reference in New Issue
Block a user