mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-08 04:42:04 -04:00
pinctrl: sunxi: Fix memory leak on krealloc failure
[ Upstream commit e3507c56cbb208d4f160942748c527ef6a528ba1 ]
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:
parent
05b5621bec
commit
abe9813d60
1 changed files with 8 additions and 3 deletions
|
|
@ -327,6 +327,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;
|
||||
|
|
@ -401,9 +402,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;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue