remoteproc: sysmon: fix memory leak in qcom_add_sysmon_subdev()
authorGaosheng Cui <cuigaosheng1@huawei.com>
Tue, 29 Nov 2022 10:56:50 +0000 (18:56 +0800)
committerBjorn Andersson <andersson@kernel.org>
Wed, 7 Dec 2022 04:09:56 +0000 (22:09 -0600)
The kfree() should be called when of_irq_get_byname() fails or
devm_request_threaded_irq() fails in qcom_add_sysmon_subdev(),
otherwise there will be a memory leak, so add kfree() to fix it.

Fixes: 027045a6e2b7 ("remoteproc: qcom: Add shutdown-ack irq")
Signed-off-by: Gaosheng Cui <cuigaosheng1@huawei.com>
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
Link: https://lore.kernel.org/r/20221129105650.1539187-1-cuigaosheng1@huawei.com
drivers/remoteproc/qcom_sysmon.c

index 3992bb6..85393d5 100644 (file)
@@ -652,7 +652,9 @@ struct qcom_sysmon *qcom_add_sysmon_subdev(struct rproc *rproc,
                if (sysmon->shutdown_irq != -ENODATA) {
                        dev_err(sysmon->dev,
                                "failed to retrieve shutdown-ack IRQ\n");
-                       return ERR_PTR(sysmon->shutdown_irq);
+                       ret = sysmon->shutdown_irq;
+                       kfree(sysmon);
+                       return ERR_PTR(ret);
                }
        } else {
                ret = devm_request_threaded_irq(sysmon->dev,
@@ -663,6 +665,7 @@ struct qcom_sysmon *qcom_add_sysmon_subdev(struct rproc *rproc,
                if (ret) {
                        dev_err(sysmon->dev,
                                "failed to acquire shutdown-ack IRQ\n");
+                       kfree(sysmon);
                        return ERR_PTR(ret);
                }
        }