[PATCH 2/4] pinctrl: renesas: rzn1: free maps on DT map failure

From: Jiale Yao

Date: Thu Sep 24 2026 - 07:22:45 EST


rzn1_dt_node_to_map_one() appends mappings for each DT node. If a
node fails after map storage has been reserved, the top-level callback
returns without releasing mappings built for the current and previous
nodes.

Free the accumulated map and clear the output parameters on every error
path.

Signed-off-by: Jiale Yao <yaojiale02@xxxxxxx>
---
drivers/pinctrl/renesas/pinctrl-rzn1.c | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/drivers/pinctrl/renesas/pinctrl-rzn1.c b/drivers/pinctrl/renesas/pinctrl-rzn1.c
index fb874867dbfb..1b977504d26e 100644
--- a/drivers/pinctrl/renesas/pinctrl-rzn1.c
+++ b/drivers/pinctrl/renesas/pinctrl-rzn1.c
@@ -411,15 +411,21 @@ static int rzn1_dt_node_to_map(struct pinctrl_dev *pctldev,

ret = rzn1_dt_node_to_map_one(pctldev, np, map, num_maps);
if (ret < 0)
- return ret;
+ goto err_free_map;

for_each_child_of_node_scoped(np, child) {
ret = rzn1_dt_node_to_map_one(pctldev, child, map, num_maps);
if (ret < 0)
- return ret;
+ goto err_free_map;
}

return 0;
+
+err_free_map:
+ pinctrl_utils_free_map(pctldev, *map, *num_maps);
+ *map = NULL;
+ *num_maps = 0;
+ return ret;
}

static const struct pinctrl_ops rzn1_pctrl_ops = {
--
2.34.1