From 5e58389c4119a3e17c03e5a27d89ec540e1bf8ae Mon Sep 17 00:00:00 2001 From: Ramachandra Sudarshan N Date: Fri, 23 Dec 2011 21:54:22 +0530 Subject: [PATCH] [PORT FROM R2] intel_scu_ipc: fix scu_ready_sem rlease in intel_scu_ipc_medfw_upgrade BZ: 18346 Found a bug where we don't release scu_ready_sem in intel_scu_ipc_medfw_upgrade. Fixed this by releasing the scu_ready_sem in the failure path. Change-Id: Ie31d18acf7bf8fbedce756ce8ce94cd9926cd4ce Signed-off-by: Illyas Mansoor Reviewed-on: http://android.intel.com:8080/29864 Reviewed-by: Ramachandra, Sudarshan N Tested-by: Martin, LoicX Reviewed-by: buildbot Tested-by: buildbot --- drivers/platform/x86/intel_scu_ipc.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/drivers/platform/x86/intel_scu_ipc.c b/drivers/platform/x86/intel_scu_ipc.c index a9e5f3d..81a15d0 100644 --- a/drivers/platform/x86/intel_scu_ipc.c +++ b/drivers/platform/x86/intel_scu_ipc.c @@ -1271,9 +1271,11 @@ int intel_scu_ipc_medfw_upgrade(void) mfld_fw_upd.wscu = !mfld_fw_upd.wscu; - ret_val = busy_wait(&mfld_fw_upd); - if (ret_val < 0) + if (busy_wait(&mfld_fw_upd) < 0) { + ret_val = -1; + release_scu_ready_sem(); goto term; + } /* TODO:Add a count for iteration, based on sizes of security firmware, * so that we determine finite number of iterations to loop thro. @@ -1290,6 +1292,7 @@ int intel_scu_ipc_medfw_upgrade(void) if (mb_state == MB_ERROR) { dev_dbg(&ipcdev.pdev->dev, "check_mb_status,error\n"); ret_val = -1; + release_scu_ready_sem(); goto term; } @@ -1311,6 +1314,7 @@ int intel_scu_ipc_medfw_upgrade(void) if (busy_wait(&mfld_fw_upd) < 0) { ret_val = -1; + release_scu_ready_sem(); goto term; } @@ -1322,6 +1326,7 @@ int intel_scu_ipc_medfw_upgrade(void) dev_err(&ipcdev.pdev->dev, "calc_offset_and_length_error,error\n"); ret_val = -1; + release_scu_ready_sem(); goto term; } @@ -1331,6 +1336,7 @@ int intel_scu_ipc_medfw_upgrade(void) "Error processing fw chunk=%s\n", mfld_fw_upd.mb_status); ret_val = -1; + release_scu_ready_sem(); goto term; } else dev_dbg(&ipcdev.pdev->dev, -- 2.7.4