[PATCH] soc: microchip: mpfs-sys-controller: fix resource leak on probe error
Felix Gu
ustc.gu at gmail.com
Wed May 6 04:29:02 PDT 2026
In mpfs_sys_controller_probe(), when device_get_match_data() returns
NULL, it returns -EINVAL directly without freeing the mbox channel
or the allocated sys_controller memory, causing a resource leak.
Fixes: 63b5305ad84d ("soc: microchip: mpfs-sys-controller: add support for pic64gx")
Signed-off-by: Felix Gu <ustc.gu at gmail.com>
---
drivers/soc/microchip/mpfs-sys-controller.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/drivers/soc/microchip/mpfs-sys-controller.c b/drivers/soc/microchip/mpfs-sys-controller.c
index 92d1142a59e6..0400a01b2338 100644
--- a/drivers/soc/microchip/mpfs-sys-controller.c
+++ b/drivers/soc/microchip/mpfs-sys-controller.c
@@ -158,8 +158,8 @@ static int mpfs_sys_controller_probe(struct platform_device *pdev)
of_data = (struct mpfs_syscon_config *) device_get_match_data(dev);
if (!of_data) {
- dev_err(dev, "Error getting match data\n");
- return -EINVAL;
+ ret = dev_err_probe(dev, -EINVAL, "Error getting match data\n");
+ goto out_free_channel;
}
for (i = 0; i < of_data->nb_subdevs; i++) {
@@ -173,6 +173,8 @@ static int mpfs_sys_controller_probe(struct platform_device *pdev)
return 0;
+out_free_channel:
+ mbox_free_channel(sys_controller->chan);
out_free:
kfree(sys_controller);
return ret;
---
base-commit: 9d0d467c3572e93c5faa2e5906a8bbcd70b24efd
change-id: 20260506-mpfs-c7e227663554
Best regards,
--
Felix Gu <ustc.gu at gmail.com>
More information about the linux-riscv
mailing list