mirror of
https://github.com/torvalds/linux.git
synced 2026-06-05 04:56:13 +02:00
clk: renesas: cpg-mssr: Fix memory leak in cpg_mssr_reserved_init()
In case of krealloc_array() failure, the current error handling just
returns from the function without freeing the original array.
Fix this memory leak by freeing the original array.
Fixes: 6aa1754764 ("clk: renesas: cpg-mssr: Ignore all clocks assigned to non-Linux system")
Signed-off-by: Yuan CHen <chenyuan@kylinos.cn>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Link: https://patch.msgid.link/20250908012810.4767-1-chenyuan_fl@163.com
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
This commit is contained in:
parent
2cfff084f0
commit
cc55fc58fc
|
|
@ -1082,6 +1082,7 @@ static int __init cpg_mssr_reserved_init(struct cpg_mssr_priv *priv,
|
|||
|
||||
of_for_each_phandle(&it, rc, node, "clocks", "#clock-cells", -1) {
|
||||
int idx;
|
||||
unsigned int *new_ids;
|
||||
|
||||
if (it.node != priv->np)
|
||||
continue;
|
||||
|
|
@ -1092,11 +1093,13 @@ static int __init cpg_mssr_reserved_init(struct cpg_mssr_priv *priv,
|
|||
if (args[0] != CPG_MOD)
|
||||
continue;
|
||||
|
||||
ids = krealloc_array(ids, (num + 1), sizeof(*ids), GFP_KERNEL);
|
||||
if (!ids) {
|
||||
new_ids = krealloc_array(ids, (num + 1), sizeof(*ids), GFP_KERNEL);
|
||||
if (!new_ids) {
|
||||
of_node_put(it.node);
|
||||
kfree(ids);
|
||||
return -ENOMEM;
|
||||
}
|
||||
ids = new_ids;
|
||||
|
||||
if (priv->reg_layout == CLK_REG_LAYOUT_RZ_A)
|
||||
idx = MOD_CLK_PACK_10(args[1]); /* for DEF_MOD_STB() */
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user