diff options
-rw-r--r-- | drivers/dma-buf/dma-fence.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/drivers/dma-buf/dma-fence.c b/drivers/dma-buf/dma-fence.c index 8025a891d3e9..ff0cd6eae766 100644 --- a/drivers/dma-buf/dma-fence.c +++ b/drivers/dma-buf/dma-fence.c | |||
@@ -149,9 +149,12 @@ int dma_fence_signal_locked(struct dma_fence *fence) | |||
149 | trace_dma_fence_signaled(fence); | 149 | trace_dma_fence_signaled(fence); |
150 | } | 150 | } |
151 | 151 | ||
152 | list_for_each_entry_safe(cur, tmp, &fence->cb_list, node) { | 152 | if (!list_empty(&fence->cb_list)) { |
153 | list_del_init(&cur->node); | 153 | list_for_each_entry_safe(cur, tmp, &fence->cb_list, node) { |
154 | cur->func(fence, cur); | 154 | INIT_LIST_HEAD(&cur->node); |
155 | cur->func(fence, cur); | ||
156 | } | ||
157 | INIT_LIST_HEAD(&fence->cb_list); | ||
155 | } | 158 | } |
156 | return ret; | 159 | return ret; |
157 | } | 160 | } |