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

Deucher, Alexander Alexander.Deucher at amd.com
Thu Aug 10 14:53:53 UTC 2017


> -----Original Message-----
> From: Christian König [mailto:deathsimple at vodafone.de]
> Sent: Thursday, August 10, 2017 10:44 AM
> To: Deucher, Alexander; amd-gfx at lists.freedesktop.org; dri-
> devel at lists.freedesktop.org
> Subject: Re: [PATCH] dma-buf: handle NULL src_list in
> reservation_object_copy_fences
> 
> 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.

FWIW, the issue was reported on a single card.

Alex

> 
> 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