lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <914ba746-c32f-405b-97fd-d61dfa9073c3@amd.com>
Date: Tue, 25 Nov 2025 14:30:52 +0100
From: Christian König <christian.koenig@....com>
To: Tvrtko Ursulin <tursulin@...ulin.net>, Philipp Stanner
 <phasta@...nel.org>, Sumit Semwal <sumit.semwal@...aro.org>,
 Gustavo Padovan <gustavo@...ovan.org>,
 Daniel Almeida <daniel.almeida@...labora.com>
Cc: linux-media@...r.kernel.org, dri-devel@...ts.freedesktop.org,
 linux-kernel@...r.kernel.org
Subject: Re: [PATCH 2/2] dma-buf/dma-fence: Unify return codes for signalled
 fences

On 11/25/25 14:20, Tvrtko Ursulin wrote:
> On 25/11/2025 10:44, Philipp Stanner wrote:
>> Almost all users of dma_fence_signal() ignore the return code which
>> would indicate that the fence was already signaled. The same return code
>> by dma_fence_add_callback() cannot be ignored, however, because it's
>> needed to detect races.
>>
>> For an already signaled fence, dma_fence_signal() returns -EINVAL,
>> whereas dma_fence_add_callback() returns -ENOENT.
>>
>> Unify the error codes by having dma_fence_signal() return -ENOENT, too.
>>
>> Signed-off-by: Philipp Stanner <phasta@...nel.org>
>> ---
>>   drivers/dma-buf/dma-fence.c | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/drivers/dma-buf/dma-fence.c b/drivers/dma-buf/dma-fence.c
>> index 3a48896ded62..09d97624e647 100644
>> --- a/drivers/dma-buf/dma-fence.c
>> +++ b/drivers/dma-buf/dma-fence.c
>> @@ -373,7 +373,7 @@ int dma_fence_signal_timestamp_locked(struct dma_fence *fence,
>>       lockdep_assert_held(fence->lock);
>>         if (unlikely(__dma_fence_is_signaled(fence)))
>> -        return -EINVAL;
>> +        return -ENOENT;
>>         /* Stash the cb_list before replacing it with the timestamp */
>>       list_replace(&fence->cb_list, &cb_list);
> 
> Story checks out AFAICT - only two callers fetch the error, xe and kfd, and neither does anything with it. So I'd say it makes sense to unify the errno.

To be honest it rather sounds like removing the error code is the right thing to do.

IIRC the policy was initially that drivers should signal a fence only once and when they do it multiple times then that is an error.

But we quickly found that with opportunistically checking that this policy is actually not helpful and dropped it.

The error return code here is basically just a leftover from this policy and not useful as far as I can see.

Regards,
Christian. 

> 
> Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@...lia.com>
> 
> Regards,
> 
> Tvrtko
> 
> P.S. Just not sure of the 1/2 on which this one ends depending on. I *think* I suggested the helper in the context of some discussion long long time ago but what it was? And what about all the drivers which look at the signaled bit directly?


Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ