mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2026-04-03 12:05:13 +02:00
pinctrl: sunxi: Fix memory leak on krealloc failure
[ Upstream commite3507c56cb] In sunxi_pctrl_dt_node_to_map(), when krealloc() fails to resize the pinctrl_map array, the function returns -ENOMEM directly without freeing the previously allocated *map buffer. This results in a memory leak of the original kmalloc_array allocation. Fixes:e11dee2e98("pinctrl: sunxi: Deal with configless pins") Signed-off-by: Yuan Chen <chenyuan@kylinos.cn> Link: https://lore.kernel.org/20250620012708.16709-1-chenyuan_fl@163.com Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
c63ca4d387
commit
230b23da10
@@ -395,6 +395,7 @@ static int sunxi_pctrl_dt_node_to_map(struct pinctrl_dev *pctldev,
|
||||
const char *function, *pin_prop;
|
||||
const char *group;
|
||||
int ret, npins, nmaps, configlen = 0, i = 0;
|
||||
struct pinctrl_map *new_map;
|
||||
|
||||
*map = NULL;
|
||||
*num_maps = 0;
|
||||
@@ -469,9 +470,13 @@ static int sunxi_pctrl_dt_node_to_map(struct pinctrl_dev *pctldev,
|
||||
* We know have the number of maps we need, we can resize our
|
||||
* map array
|
||||
*/
|
||||
*map = krealloc(*map, i * sizeof(struct pinctrl_map), GFP_KERNEL);
|
||||
if (!*map)
|
||||
return -ENOMEM;
|
||||
new_map = krealloc(*map, i * sizeof(struct pinctrl_map), GFP_KERNEL);
|
||||
if (!new_map) {
|
||||
ret = -ENOMEM;
|
||||
goto err_free_map;
|
||||
}
|
||||
|
||||
*map = new_map;
|
||||
|
||||
return 0;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user