[PATCH] clk: scmi: fix invalid clock name references

Etienne Carriere etienne.carriere at linaro.org
Tue Apr 26 09:49:45 CEST 2022


Fixes clock name references in scmi_clk driver. SCMI clock names are
retrieved from the SCMI firmware by invoking SCMI commands using the
stack for SCMI response message hence clocks names located in the
stack must be duplicated before being registered in the clock framework.

Fixes: 7c33f78983c3 ("clk: scmi: register scmi clocks with CCF")
Reported-by: scan-admin at coverity.com
Signed-off-by: Etienne Carriere <etienne.carriere at linaro.org>
---
 drivers/clk/clk_scmi.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/drivers/clk/clk_scmi.c b/drivers/clk/clk_scmi.c
index 57022685e2..5019aacef9 100644
--- a/drivers/clk/clk_scmi.c
+++ b/drivers/clk/clk_scmi.c
@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0+
 /*
- * Copyright (C) 2019-2020 Linaro Limited
+ * Copyright (C) 2019-2022 Linaro Limited
  */
 
 #define LOG_CATEGORY UCLASS_CLK
@@ -12,6 +12,7 @@
 #include <scmi_protocols.h>
 #include <asm/types.h>
 #include <linux/clk-provider.h>
+#include <linux/string.h>
 
 static int scmi_clk_get_num_clock(struct udevice *dev, size_t *num_clocks)
 {
@@ -53,7 +54,9 @@ static int scmi_clk_get_attibute(struct udevice *dev, int clkid, char **name)
 	if (ret)
 		return ret;
 
-	*name = out.clock_name;
+	*name = strdup(out.clock_name);
+	if (*name)
+		return -ENOMEM;
 
 	return 0;
 }
-- 
2.17.1



More information about the U-Boot mailing list