[PATCH 2/5] drm/amdgpu/userq: Add lock before accessing dma_fence_is_signaled_locked

Christian König christian.koenig at amd.com
Fri May 2 12:35:59 UTC 2025



On 4/9/25 07:48, Arunpravin Paneer Selvam wrote:
> Add lock before accessing dma_fence_is_signaled_locked.
> 
> Signed-off-by: Arunpravin Paneer Selvam <Arunpravin.PaneerSelvam at amd.com>
> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c
> index 24d19b920100..d5b35b5df527 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c
> @@ -259,11 +259,13 @@ static int amdgpu_userq_fence_create(struct amdgpu_usermode_queue *userq,
>  
>  	/* Check if hardware has already processed the job */
>  	spin_lock_irqsave(&fence_drv->fence_list_lock, flags);
> +	spin_lock_nested(fence->lock, SINGLE_DEPTH_NESTING);

That is clear incorrect use of spin_lock_nested(). Why does a normal spinlock() doesn't work?

Regards,
Christian.


>  	if (!dma_fence_is_signaled_locked(fence))
>  		list_add_tail(&userq_fence->link, &fence_drv->fences);
>  	else
>  		dma_fence_put(fence);
>  
> +	spin_unlock(fence->lock);
>  	spin_unlock_irqrestore(&fence_drv->fence_list_lock, flags);
>  
>  	*f = fence;



More information about the amd-gfx mailing list