Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 937c3471 authored by Francisco Jerez's avatar Francisco Jerez
Browse files

drm/nouveau: Avoid potential race between nouveau_fence_update() and context takedown.

parent a8b214f0
Loading
Loading
Loading
Loading
+11 −8
Original line number Diff line number Diff line
@@ -77,6 +77,8 @@ nouveau_fence_update(struct nouveau_channel *chan)

	spin_lock(&chan->fence.lock);

	/* Fetch the last sequence if the channel is still up and running */
	if (likely(!list_empty(&chan->fence.pending))) {
		if (USE_REFCNT(dev))
			sequence = nvchan_rd32(chan, 0x48);
		else
@@ -85,6 +87,7 @@ nouveau_fence_update(struct nouveau_channel *chan)
		if (chan->fence.sequence_ack == sequence)
			goto out;
		chan->fence.sequence_ack = sequence;
	}

	list_for_each_entry_safe(fence, tmp, &chan->fence.pending, entry) {
		sequence = fence->sequence;