|
@@ -248,9 +248,12 @@ dma_fence_get_rcu_safe(struct dma_fence * __rcu *fencep)
|
|
struct dma_fence *fence;
|
|
struct dma_fence *fence;
|
|
|
|
|
|
fence = rcu_dereference(*fencep);
|
|
fence = rcu_dereference(*fencep);
|
|
- if (!fence || !dma_fence_get_rcu(fence))
|
|
|
|
|
|
+ if (!fence)
|
|
return NULL;
|
|
return NULL;
|
|
|
|
|
|
|
|
+ if (!dma_fence_get_rcu(fence))
|
|
|
|
+ continue;
|
|
|
|
+
|
|
/* The atomic_inc_not_zero() inside dma_fence_get_rcu()
|
|
/* The atomic_inc_not_zero() inside dma_fence_get_rcu()
|
|
* provides a full memory barrier upon success (such as now).
|
|
* provides a full memory barrier upon success (such as now).
|
|
* This is paired with the write barrier from assigning
|
|
* This is paired with the write barrier from assigning
|