summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeng Fan <peng.fan@nxp.com>2025-10-17 09:56:25 +0800
committerShawn Guo <shawnguo@kernel.org>2025-10-27 14:43:47 +0800
commit62c740fb11ea7790f6bcd4f72c563f9ae2a42e9a (patch)
tree8bd3a8c7dd73afd65539109324ba85532c2ddbd5
parentee67247843a2b62d1473cfa4df300e69b5190ccf (diff)
firmware: imx: scu-irq: Free mailbox client on failure at imx_scu_enable_general_irq_channel()
The IRQ mailbox is an optional channel and does not need to be kept until driver removal when an error occurs. Free the allocated memory in the error path. Add 'goto free_cl' when mbox_request_channel_byname() fails, to keep free at one place. Signed-off-by: Peng Fan <peng.fan@nxp.com> Reviewed-by: Frank Li <Frank.Li@nxp.com> Signed-off-by: Shawn Guo <shawnguo@kernel.org>
-rw-r--r--drivers/firmware/imx/imx-scu-irq.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/firmware/imx/imx-scu-irq.c b/drivers/firmware/imx/imx-scu-irq.c
index f2b902e95b73..d6fd04404e2a 100644
--- a/drivers/firmware/imx/imx-scu-irq.c
+++ b/drivers/firmware/imx/imx-scu-irq.c
@@ -219,8 +219,7 @@ int imx_scu_enable_general_irq_channel(struct device *dev)
if (IS_ERR(ch)) {
ret = PTR_ERR(ch);
dev_err(dev, "failed to request mbox chan gip3, ret %d\n", ret);
- devm_kfree(dev, cl);
- return ret;
+ goto free_cl;
}
INIT_WORK(&imx_sc_irq_work, imx_scu_irq_work_handler);
@@ -255,6 +254,8 @@ int imx_scu_enable_general_irq_channel(struct device *dev)
free_ch:
mbox_free_channel(ch);
+free_cl:
+ devm_kfree(dev, cl);
return ret;
}