On 3/30/26 15:36, Tvrtko Ursulin wrote:
> Move the signalling tracepoint to before fence->ops are reset otherwise
> tracepoint will dereference a null pointer.
> 
> Signed-off-by: Tvrtko Ursulin <[email protected]>
> Fixes: 541c8f2468b9 ("dma-buf: detach fence ops on signal v3")
> Cc: Christian König <[email protected]>
> Cc: Philipp Stanner <[email protected]>
> Cc: Boris Brezillon <[email protected]>
> Cc: [email protected]
> Cc: [email protected]

Good catch. I just silently assumed that the fence is not signaled when we 
traced signaling.

Going to take another look since there might be more problems, but for now:

Reviewed-by: Christian König <[email protected]>

> ---
>  drivers/dma-buf/dma-fence.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/dma-buf/dma-fence.c b/drivers/dma-buf/dma-fence.c
> index 1826ba73094c..1c1eaecaf1b0 100644
> --- a/drivers/dma-buf/dma-fence.c
> +++ b/drivers/dma-buf/dma-fence.c
> @@ -363,6 +363,8 @@ void dma_fence_signal_timestamp_locked(struct dma_fence 
> *fence,
>                                     &fence->flags)))
>               return;
>  
> +     trace_dma_fence_signaled(fence);
> +
>       /*
>        * When neither a release nor a wait operation is specified set the ops
>        * pointer to NULL to allow the fence structure to become independent
> @@ -377,7 +379,6 @@ void dma_fence_signal_timestamp_locked(struct dma_fence 
> *fence,
>  
>       fence->timestamp = timestamp;
>       set_bit(DMA_FENCE_FLAG_TIMESTAMP_BIT, &fence->flags);
> -     trace_dma_fence_signaled(fence);
>  
>       list_for_each_entry_safe(cur, tmp, &cb_list, node) {
>               INIT_LIST_HEAD(&cur->node);

Reply via email to