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>
This commit is contained in:
@@ -219,8 +219,7 @@ int imx_scu_enable_general_irq_channel(struct device *dev)
|
|||||||
if (IS_ERR(ch)) {
|
if (IS_ERR(ch)) {
|
||||||
ret = PTR_ERR(ch);
|
ret = PTR_ERR(ch);
|
||||||
dev_err(dev, "failed to request mbox chan gip3, ret %d\n", ret);
|
dev_err(dev, "failed to request mbox chan gip3, ret %d\n", ret);
|
||||||
devm_kfree(dev, cl);
|
goto free_cl;
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
INIT_WORK(&imx_sc_irq_work, imx_scu_irq_work_handler);
|
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:
|
free_ch:
|
||||||
mbox_free_channel(ch);
|
mbox_free_channel(ch);
|
||||||
|
free_cl:
|
||||||
|
devm_kfree(dev, cl);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user