Dear all, On Tue, 26 Apr 2022 at 09:52, Etienne Carriere <etienne.carri...@linaro.org> wrote: > > 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-ad...@coverity.com > Signed-off-by: Etienne Carriere <etienne.carri...@linaro.org> > --- > Changes since v1: > - Fix buggy test on strdup() return value > --- > 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..c8e10c4aea 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 >
I posted this change too quickly and missed something. With this change, the clock name is duplicated twice since it's already duplicated in caller function scmi_clk_probe(). Please discard this change. I'll send a v3 proposal to address the issue in a more consistent way. My apologies, Etienne