diff mbox series

interconnect: samsung: Add NULL check in exynos_generic_icc_probe

Message ID 20250410110421.77580-1-hanchunchao@inspur.com
State New
Headers show
Series interconnect: samsung: Add NULL check in exynos_generic_icc_probe | expand

Commit Message

Charles Han April 10, 2025, 11:04 a.m. UTC
devm_kasprintf() can return a NULL pointer on failure,but this
returned value in exynos_generic_icc_probe() is not checked.
Add NULL check in exynos_generic_icc_probe(), to handle kernel NULL
pointer dereference error.

Fixes: 2f95b9d5cf0b ("interconnect: Add generic interconnect driver for Exynos SoCs")
Signed-off-by: Charles Han <hanchunchao@inspur.com>
---
 drivers/interconnect/samsung/exynos.c | 5 +++++
 1 file changed, 5 insertions(+)

Comments

Krzysztof Kozlowski April 10, 2025, 12:16 p.m. UTC | #1
On 10/04/2025 13:04, Charles Han wrote:
> devm_kasprintf() can return a NULL pointer on failure,but this
> returned value in exynos_generic_icc_probe() is not checked.
> Add NULL check in exynos_generic_icc_probe(), to handle kernel NULL
> pointer dereference error.
> 
> Fixes: 2f95b9d5cf0b ("interconnect: Add generic interconnect driver for Exynos SoCs")
> Signed-off-by: Charles Han <hanchunchao@inspur.com>
> ---
>  drivers/interconnect/samsung/exynos.c | 5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/drivers/interconnect/samsung/exynos.c b/drivers/interconnect/samsung/exynos.c
> index 9e041365d909..f3568f0d92d1 100644
> --- a/drivers/interconnect/samsung/exynos.c
> +++ b/drivers/interconnect/samsung/exynos.c
> @@ -134,6 +134,11 @@ static int exynos_generic_icc_probe(struct platform_device *pdev)
>  	priv->node = icc_node;
>  	icc_node->name = devm_kasprintf(&pdev->dev, GFP_KERNEL, "%pOFn",
>  					bus_dev->of_node);
> +	if (!icc_node->name) {
> +		devm_kfree(&pdev->dev, priv);

Instead of doing some scripting changes you need to look at the code.
Look at other error paths, how they are doing it.

Otherwise please explain why you need to release a managed resource?

Best regards,
Krzysztof
diff mbox series

Patch

diff --git a/drivers/interconnect/samsung/exynos.c b/drivers/interconnect/samsung/exynos.c
index 9e041365d909..f3568f0d92d1 100644
--- a/drivers/interconnect/samsung/exynos.c
+++ b/drivers/interconnect/samsung/exynos.c
@@ -134,6 +134,11 @@  static int exynos_generic_icc_probe(struct platform_device *pdev)
 	priv->node = icc_node;
 	icc_node->name = devm_kasprintf(&pdev->dev, GFP_KERNEL, "%pOFn",
 					bus_dev->of_node);
+	if (!icc_node->name) {
+		devm_kfree(&pdev->dev, priv);
+		return -ENOMEM;
+	}
+
 	if (of_property_read_u32(bus_dev->of_node, "samsung,data-clock-ratio",
 				 &priv->bus_clk_ratio))
 		priv->bus_clk_ratio = EXYNOS_ICC_DEFAULT_BUS_CLK_RATIO;