diff options
author | Gaosheng Cui <cuigaosheng1@huawei.com> | 2022-11-29 11:56:50 +0100 |
---|---|---|
committer | Bjorn Andersson <andersson@kernel.org> | 2022-12-07 05:09:56 +0100 |
commit | e01ce676aaef3b13d02343d7e70f9637d93a3367 (patch) | |
tree | 4fe39bed0a91c0180bf57a4a70e8ed3f27359a35 /drivers/remoteproc | |
parent | remoteproc: sysmon: Make QMI message rules const (diff) | |
download | linux-e01ce676aaef3b13d02343d7e70f9637d93a3367.tar.xz linux-e01ce676aaef3b13d02343d7e70f9637d93a3367.zip |
remoteproc: sysmon: fix memory leak in qcom_add_sysmon_subdev()
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
Diffstat (limited to 'drivers/remoteproc')
-rw-r--r-- | drivers/remoteproc/qcom_sysmon.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/remoteproc/qcom_sysmon.c b/drivers/remoteproc/qcom_sysmon.c index 3992bb61d2ec..85393d5eb005 100644 --- a/drivers/remoteproc/qcom_sysmon.c +++ b/drivers/remoteproc/qcom_sysmon.c @@ -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); } } |