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