Commit b8c036df authored by Christian König's avatar Christian König
Browse files

dma-buf: simplify reservation_object_get_fences_rcu a bit



We can add the exclusive fence to the list after making sure we got
a consistent state.

Signed-off-by: default avatarChristian König <christian.koenig@amd.com>
Reviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Link: https://patchwork.freedesktop.org/patch/322034/?series=64786&rev=1
parent 4c2488cf
Loading
Loading
Loading
Loading
+5 −10
Original line number Diff line number Diff line
@@ -459,13 +459,6 @@ int reservation_object_get_fences_rcu(struct reservation_object *obj,
				if (!dma_fence_get_rcu(shared[i]))
					break;
			}

			if (!pfence_excl && fence_excl) {
				shared[i] = fence_excl;
				fence_excl = NULL;
				++i;
				++shared_count;
			}
		}

		if (i != shared_count || read_seqcount_retry(&obj->seq, seq)) {
@@ -480,6 +473,11 @@ unlock:
		rcu_read_unlock();
	} while (ret);

	if (pfence_excl)
		*pfence_excl = fence_excl;
	else if (fence_excl)
		shared[++shared_count] = fence_excl;

	if (!shared_count) {
		kfree(shared);
		shared = NULL;
@@ -487,9 +485,6 @@ unlock:

	*pshared_count = shared_count;
	*pshared = shared;
	if (pfence_excl)
		*pfence_excl = fence_excl;

	return ret;
}
EXPORT_SYMBOL_GPL(reservation_object_get_fences_rcu);