]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
interconnect: icc-clk: destroy nodes in case of memory allocation failures
authorGabor Juhos <j4g8y7@gmail.com>
Wed, 25 Jun 2025 17:32:35 +0000 (19:32 +0200)
committerGeorgi Djakov <djakov@kernel.org>
Thu, 26 Jun 2025 16:18:01 +0000 (19:18 +0300)
When memory allocation fails during creating the name of the nodes in
icc_clk_register(), the code continues on the error path and it calls
icc_nodes_remove() to destroy the already created nodes. However that
function only destroys the nodes which were already added to the provider
and the newly created nodes are never destroyed in case of error.

In order to avoid a memory leaks, change the code to destroy the newly
created nodes explicitly in case of memory allocation failures.

Fixes: 44c5aa73ccd1 ("interconnect: icc-clk: check return values of devm_kasprintf()")
Signed-off-by: Gabor Juhos <j4g8y7@gmail.com>
Reviewed-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
Link: https://lore.kernel.org/r/20250625-icc-clk-memleak-fix-v1-1-4151484cd24f@gmail.com
Signed-off-by: Georgi Djakov <djakov@kernel.org>
drivers/interconnect/icc-clk.c

index 88f311c110207757f0609e5cec7d377a91133c6d..93c030608d3e0aad7d9c1ed81a51dcde0d3f85ab 100644 (file)
@@ -117,6 +117,7 @@ struct icc_provider *icc_clk_register(struct device *dev,
 
                node->name = devm_kasprintf(dev, GFP_KERNEL, "%s_master", data[i].name);
                if (!node->name) {
+                       icc_node_destroy(node->id);
                        ret = -ENOMEM;
                        goto err;
                }
@@ -135,6 +136,7 @@ struct icc_provider *icc_clk_register(struct device *dev,
 
                node->name = devm_kasprintf(dev, GFP_KERNEL, "%s_slave", data[i].name);
                if (!node->name) {
+                       icc_node_destroy(node->id);
                        ret = -ENOMEM;
                        goto err;
                }