[PATCH] dma-buf: handle NULL src_list in reservation_object_copy_fences

Christian König deathsimple at vodafone.de
Thu Aug 10 14:43:54 UTC 2017


Am 10.08.2017 um 16:40 schrieb Deucher, Alexander:
>> -----Original Message-----
>> From: amd-gfx [mailto:amd-gfx-bounces at lists.freedesktop.org] On Behalf
>> Of Christian König
>> Sent: Thursday, August 10, 2017 9:42 AM
>> To: amd-gfx at lists.freedesktop.org; dri-devel at lists.freedesktop.org
>> Subject: [PATCH] dma-buf: handle NULL src_list in
>> reservation_object_copy_fences
>>
>> From: Christian König <christian.koenig at amd.com>
>>
>> The list of shared fences can be NULL and that needs to be handled as well.
>>
>> Signed-off-by: Christian König <christian.koenig at amd.com>
> I'll squash this with the original patch for upstream.
>
> Reviewed-by: Alex Deucher <alexander.deucher at amd.com>

Please note that I haven't tested this very well. You really need a 
prime setup for testing and that's not on my desk right now.

So please ping whoever reported that problem to retest.

Thanks,
Christian.

>
>> ---
>>   drivers/dma-buf/reservation.c | 28 +++++++++++++++-------------
>>   1 file changed, 15 insertions(+), 13 deletions(-)
>>
>> diff --git a/drivers/dma-buf/reservation.c b/drivers/dma-buf/reservation.c
>> index 302c137..dec3a81 100644
>> --- a/drivers/dma-buf/reservation.c
>> +++ b/drivers/dma-buf/reservation.c
>> @@ -279,23 +279,25 @@ int reservation_object_copy_fences(struct
>> reservation_object *dst,
>>
>>   	src_list = reservation_object_get_list(src);
>>
>> -	/*
>> -	 * resize dst->fence or allocate if it doesn't exist,
>> -	 * noop if already correct size
>> -	 */
>> -	size = offsetof(typeof(*src_list), shared[src_list->shared_count]);
>> -	dst_list = kmalloc(size, GFP_KERNEL);
>> -	if (!dst_list)
>> -		return -ENOMEM;
>> +	if (src_list) {
>> +		size = offsetof(typeof(*src_list),
>> +				shared[src_list->shared_count]);
>> +		dst_list = kmalloc(size, GFP_KERNEL);
>> +		if (!dst_list)
>> +			return -ENOMEM;
>> +
>> +		dst_list->shared_count = src_list->shared_count;
>> +		dst_list->shared_max = src_list->shared_count;
>> +		for (i = 0; i < src_list->shared_count; ++i)
>> +			dst_list->shared[i] =
>> +				dma_fence_get(src_list->shared[i]);
>> +	} else {
>> +		dst_list = NULL;
>> +	}
>>
>>   	kfree(dst->staged);
>>   	dst->staged = NULL;
>>
>> -	dst_list->shared_count = src_list->shared_count;
>> -	dst_list->shared_max = src_list->shared_count;
>> -	for (i = 0; i < src_list->shared_count; ++i)
>> -		dst_list->shared[i] = dma_fence_get(src_list->shared[i]);
>> -
>>   	src_list = reservation_object_get_list(dst);
>>
>>   	old = reservation_object_get_excl(dst);
>> --
>> 2.7.4
>>
>> _______________________________________________
>> amd-gfx mailing list
>> amd-gfx at lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/amd-gfx
> _______________________________________________
> amd-gfx mailing list
> amd-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx




More information about the amd-gfx mailing list