Am 16.08.19 um 17:21 schrieb Chris Wilson:
> Before we notify the fence signal callback, we remove the cb from the
> list. However, since we are processing the entire list from underneath
> the spinlock, we do not need to individual delete each element, but can
> simply reset the link and the entire list.
>
> Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk>
> Cc: Daniel Vetter <daniel.vet...@ffwll.ch>
> Cc: Christian König <christian.koe...@amd.com>

Reviewed-by: Christian König <christian.koe...@amd.com> for the series.

> ---
>   drivers/dma-buf/dma-fence.c | 9 ++++++---
>   1 file 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)
>               trace_dma_fence_signaled(fence);
>       }
>   
> -     list_for_each_entry_safe(cur, tmp, &fence->cb_list, node) {
> -             list_del_init(&cur->node);
> -             cur->func(fence, cur);
> +     if (!list_empty(&fence->cb_list)) {
> +             list_for_each_entry_safe(cur, tmp, &fence->cb_list, node) {
> +                     INIT_LIST_HEAD(&cur->node);
> +                     cur->func(fence, cur);
> +             }
> +             INIT_LIST_HEAD(&fence->cb_list);
>       }
>       return ret;
>   }

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to