dma-buf/sync_file: free fences array in num_fences is 1
authorGustavo Padovan <gustavo.padovan@collabora.co.uk>
Wed, 21 Sep 2016 07:20:19 +0000 (10:20 +0300)
committerSean Paul <seanpaul@chromium.org>
Thu, 22 Sep 2016 11:06:16 +0000 (04:06 -0700)
When merging sync_files there is a case when we can end up with only one
fence in the merged sync_file: when all fences belong to the same
timeline.

So for this case a fence_array is not created instead we just assigned the
fence to sync_file->fence. Then we do not use the fences array anymore nor
does free it.

This patch frees the array.

Reported-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
Signed-off-by: Sean Paul <seanpaul@chromium.org>
Link: http://patchwork.freedesktop.org/patch/msgid/1474442419-6040-1-git-send-email-gustavo@padovan.org
drivers/dma-buf/sync_file.c

index 0fe7ec2657fd1cb817795607db029192b2673ae2..b29a9e817320a844ce0a0f8a89711266a17211a0 100644 (file)
@@ -150,6 +150,7 @@ static int sync_file_set_fence(struct sync_file *sync_file,
         */
        if (num_fences == 1) {
                sync_file->fence = fences[0];
+               kfree(fences);
        } else {
                array = fence_array_create(num_fences, fences,
                                           fence_context_alloc(1), 1, false);