All other call sites of qcom_scm_pas_metadata_release() for the DTB
context are guarded by a check on pas->dtb_pas_id, but the call inside
qcom_pas_load() was not. Fix this by moving the call to the guarded
block.

Reviewed-by: Konrad Dybcio <[email protected]>
Signed-off-by: Mukesh Ojha <[email protected]>
---
 drivers/remoteproc/qcom_q6v5_pas.c | 13 +++++--------
 1 file changed, 5 insertions(+), 8 deletions(-)

diff --git a/drivers/remoteproc/qcom_q6v5_pas.c 
b/drivers/remoteproc/qcom_q6v5_pas.c
index 45be8c5049e1..2785d19408d1 100644
--- a/drivers/remoteproc/qcom_q6v5_pas.c
+++ b/drivers/remoteproc/qcom_q6v5_pas.c
@@ -243,17 +243,14 @@ static int qcom_pas_load(struct rproc *rproc, const 
struct firmware *fw)
                ret = qcom_mdt_pas_load(pas->dtb_pas_ctx, pas->dtb_firmware,
                                        pas->dtb_firmware_name, (__force void 
*)pas->dtb_mem_region,
                                        &pas->dtb_mem_reloc);
-               if (ret)
-                       goto release_dtb_metadata;
+               if (ret) {
+                       qcom_scm_pas_metadata_release(pas->dtb_pas_ctx);
+                       release_firmware(pas->dtb_firmware);
+                       return ret;
+               }
        }
 
        return 0;
-
-release_dtb_metadata:
-       qcom_scm_pas_metadata_release(pas->dtb_pas_ctx);
-       release_firmware(pas->dtb_firmware);
-
-       return ret;
 }
 
 static void qcom_pas_unmap_carveout(struct rproc *rproc, phys_addr_t mem_phys, 
size_t size)
-- 
2.53.0


Reply via email to