remoteproc: sysmon: fix memory leak in qcom_add_sysmon_subdev()
[ Upstream commit e01ce676aaef3b13d02343d7e70f9637d93a3367 ]
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: 027045a6e2
("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
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
292c0f3b4a
commit
27441fab26
@ -518,7 +518,9 @@ struct qcom_sysmon *qcom_add_sysmon_subdev(struct rproc *rproc,
|
|||||||
if (sysmon->shutdown_irq != -ENODATA) {
|
if (sysmon->shutdown_irq != -ENODATA) {
|
||||||
dev_err(sysmon->dev,
|
dev_err(sysmon->dev,
|
||||||
"failed to retrieve shutdown-ack IRQ\n");
|
"failed to retrieve shutdown-ack IRQ\n");
|
||||||
return ERR_PTR(sysmon->shutdown_irq);
|
ret = sysmon->shutdown_irq;
|
||||||
|
kfree(sysmon);
|
||||||
|
return ERR_PTR(ret);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
ret = devm_request_threaded_irq(sysmon->dev,
|
ret = devm_request_threaded_irq(sysmon->dev,
|
||||||
@ -529,6 +531,7 @@ struct qcom_sysmon *qcom_add_sysmon_subdev(struct rproc *rproc,
|
|||||||
if (ret) {
|
if (ret) {
|
||||||
dev_err(sysmon->dev,
|
dev_err(sysmon->dev,
|
||||||
"failed to acquire shutdown-ack IRQ\n");
|
"failed to acquire shutdown-ack IRQ\n");
|
||||||
|
kfree(sysmon);
|
||||||
return ERR_PTR(ret);
|
return ERR_PTR(ret);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user