From: Christian König <christian.koe...@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.koe...@amd.com>
---
 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

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to