[PATCH] drm/syncobj: fix leaking dma_fence in drm_syncobj_query_ioctl

Christian König ckoenig.leichtzumerken at gmail.com
Mon Jul 22 13:21:24 UTC 2019


Am 22.07.19 um 15:16 schrieb Lionel Landwerlin:
> On 22/07/2019 15:59, Christian König wrote:
>> We need to check the context number instead if the previous sequence 
>> to detect
>> an error and if an error is detected we need to drop the reference to 
>> the
>> current fence or otherwise would leak it.
>>
>> Signed-off-by: Christian König <christian.koenig at amd.com>
>
> Fixes: 27b575a9aa2f ("drm/syncobj: add timeline payload query ioctl v6")
> Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>

CC stable? I'm not sure when this got upstream.

Christian.

>
>> ---
>>   drivers/gpu/drm/drm_syncobj.c | 10 +++++-----
>>   1 file changed, 5 insertions(+), 5 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/drm_syncobj.c 
>> b/drivers/gpu/drm/drm_syncobj.c
>> index 75cb4bb7619e..1438dcb3ebb1 100644
>> --- a/drivers/gpu/drm/drm_syncobj.c
>> +++ b/drivers/gpu/drm/drm_syncobj.c
>> @@ -1298,14 +1298,14 @@ int drm_syncobj_query_ioctl(struct drm_device 
>> *dev, void *data,
>>               struct dma_fence *iter, *last_signaled = NULL;
>>                 dma_fence_chain_for_each(iter, fence) {
>> -                if (!iter)
>> -                    break;
>> -                dma_fence_put(last_signaled);
>> -                last_signaled = dma_fence_get(iter);
>> -                if (!to_dma_fence_chain(last_signaled)->prev_seqno)
>> +                if (iter->context != fence->context) {
>> +                    dma_fence_put(iter);
>>                       /* It is most likely that timeline has
>>                        * unorder points. */
>>                       break;
>> +                }
>> +                dma_fence_put(last_signaled);
>> +                last_signaled = dma_fence_get(iter);
>>               }
>>               point = dma_fence_is_signaled(last_signaled) ?
>>                   last_signaled->seqno :
>
>



More information about the dri-devel mailing list