On Tue, 24 May 2022 at 00:38, Marijn Suijten <marijn.suijten@xxxxxxxxxxxxxx> wrote: > > The clock names formatted into the hw_clk's init structure are only used > for the duration of the registration function where they are kstrdup'ed, > making it unnecessary to keep the allocations alive for the duration of > the device (through devm). > > Just like the other DSI PHY PLL clock trees, use a stack-local char > array and save on memory outside of the pll_28nm_register function. > > Signed-off-by: Marijn Suijten <marijn.suijten@xxxxxxxxxxxxxx> Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@xxxxxxxxxx> Nit: we can use clk_name instead of vco_name too. > --- > drivers/gpu/drm/msm/dsi/phy/dsi_phy_28nm_8960.c | 10 +--------- > 1 file changed, 1 insertion(+), 9 deletions(-) > > diff --git a/drivers/gpu/drm/msm/dsi/phy/dsi_phy_28nm_8960.c b/drivers/gpu/drm/msm/dsi/phy/dsi_phy_28nm_8960.c > index 943a7e847c90..554978fc434d 100644 > --- a/drivers/gpu/drm/msm/dsi/phy/dsi_phy_28nm_8960.c > +++ b/drivers/gpu/drm/msm/dsi/phy/dsi_phy_28nm_8960.c > @@ -383,7 +383,7 @@ static int dsi_28nm_pll_restore_state(struct msm_dsi_phy *phy) > > static int pll_28nm_register(struct dsi_pll_28nm *pll_28nm, struct clk_hw **provided_clocks) > { > - char *clk_name, *vco_name; > + char clk_name[32], vco_name[32]; > struct clk_init_data vco_init = { > .parent_data = &(const struct clk_parent_data) { > .fw_name = "ref", > @@ -404,14 +404,6 @@ static int pll_28nm_register(struct dsi_pll_28nm *pll_28nm, struct clk_hw **prov > if (!bytediv) > return -ENOMEM; > > - vco_name = devm_kzalloc(dev, 32, GFP_KERNEL); > - if (!vco_name) > - return -ENOMEM; > - > - clk_name = devm_kzalloc(dev, 32, GFP_KERNEL); > - if (!clk_name) > - return -ENOMEM; > - > snprintf(vco_name, 32, "dsi%dvco_clk", pll_28nm->phy->id); > vco_init.name = vco_name; > > -- > 2.36.1 > -- With best wishes Dmitry