From 484c69d559acb6b297584a1566e5532680fcb845 Mon Sep 17 00:00:00 2001 From: Sumukh Hallymysore Ravindra Date: Wed, 9 Sep 2020 10:15:15 +0530 Subject: [PATCH] msm: synx: handle callback deregistration failure In case of callback deregistration failure, end further signaling and memory free for the external sync obj. Without the change, the memory shared with the external callback would be released even on deregistration failure, leading to possible double free, as callback might already been dispatched. Change-Id: Ic2e755b0b039a9b7ad2e25abb23949d673bda685 Signed-off-by: Sumukh Hallymysore Ravindra --- drivers/media/platform/msm/synx/synx.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/media/platform/msm/synx/synx.c b/drivers/media/platform/msm/synx/synx.c index 74669fb8e5fe..4ab19050a39f 100644 --- a/drivers/media/platform/msm/synx/synx.c +++ b/drivers/media/platform/msm/synx/synx.c @@ -256,9 +256,11 @@ int synx_signal_core(struct synx_coredata *synx_obj, */ ret = bind_ops->deregister_callback( synx_external_callback, data, sync_id); - if (ret < 0) + if (ret < 0) { pr_err("deregistration fail on %d, type: %u, err: %d\n", sync_id, type, ret); + continue; + } pr_debug("signal external sync: %d, type: %u, status: %u\n", sync_id, type, status); /* optional function to enable external signaling */