From e903f12adc76d107ab6c0a04b3e6bc23d0ff7ea1 Mon Sep 17 00:00:00 2001 From: Sumukh Hallymysore Ravindra Date: Fri, 14 Aug 2020 09:07:09 +0530 Subject: [PATCH] msm: synx: fix cleanup of fence during handle creation Change removes the registered callback with the dma fence if the handle allocation fails. This is explicitly needed as any pending callbacks in the fence results in a warning during destruction. Fix avoids such warning. Change-Id: I1b5de820789d608231f7b5a9064bb1f0261d553e Signed-off-by: Sumukh Hallymysore Ravindra --- drivers/media/platform/msm/synx/synx.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/drivers/media/platform/msm/synx/synx.c b/drivers/media/platform/msm/synx/synx.c index c52d9749dd2e..74669fb8e5fe 100644 --- a/drivers/media/platform/msm/synx/synx.c +++ b/drivers/media/platform/msm/synx/synx.c @@ -163,7 +163,7 @@ int synx_create(struct synx_session session_id, if (rc) { pr_err("[sess: %u] error initializing synx obj\n", client->id); - goto clean_up; + goto clear; } rc = synx_util_init_handle(client, synx_obj, &h_synx); @@ -180,7 +180,12 @@ int synx_create(struct synx_session session_id, return 0; clean_up: - dma_fence_put(synx_obj->fence); + if (!synx_util_is_external_object(synx_obj)) { + dma_fence_remove_callback(synx_obj->fence, + &synx_obj->fence_cb); + dma_fence_put(synx_obj->fence); + } +clear: kfree(synx_obj); fail: synx_put_client(client);