Unverified Commit 965386c9 authored by Kuninori Morimoto's avatar Kuninori Morimoto Committed by Mark Brown
Browse files

ASoC: rsnd: call unregister for null_hw when removed

commit d6956a7d ("ASoC: rsnd: add null CLOCKIN support")
added null_clk, but it is using local static valuable.
It will be leaked if rsnd driver was removed.
This patch moves it to priv, and call unregister when removing.

Fixes: d6956a7d ("ASoC: rsnd: add null CLOCKIN support")
Link: https://lore.kernel.org/r/87tumsoe2p.wl-kuninori.morimoto.gx@renesas.com


Reported-by: default avatarGeert Uytterhoeven <geert@linux-m68k.org>
Signed-off-by: default avatarKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Message-Id: <877djknbl5.wl-kuninori.morimoto.gx@renesas.com>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 058efb40
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -392,10 +392,9 @@ void rsnd_adg_clk_control(struct rsnd_priv *priv, int enable)
#define NULL_CLK "rsnd_adg_null"
static struct clk *rsnd_adg_null_clk_get(struct rsnd_priv *priv)
{
	static struct clk_hw *hw;
	struct device *dev = rsnd_priv_to_dev(priv);

	if (!hw) {
	if (!priv->null_hw) {
		struct clk_hw *_hw;
		int ret;

@@ -407,10 +406,10 @@ static struct clk *rsnd_adg_null_clk_get(struct rsnd_priv *priv)
		if (ret < 0)
			clk_hw_unregister_fixed_rate(_hw);

		hw = _hw;
		priv->null_hw = _hw;
	}

	return clk_hw_get_clk(hw, NULL_CLK);
	return clk_hw_get_clk(priv->null_hw, NULL_CLK);
}

static void rsnd_adg_get_clkin(struct rsnd_priv *priv,
@@ -649,6 +648,8 @@ void rsnd_adg_remove(struct rsnd_priv *priv)
	for_each_rsnd_clkout(clk, adg, i)
		if (adg->clkout[i])
			clk_unregister_fixed_rate(adg->clkout[i]);
	if (priv->null_hw)
		clk_hw_unregister_fixed_rate(priv->null_hw);

	of_clk_del_provider(np);

+1 −0
Original line number Diff line number Diff line
@@ -635,6 +635,7 @@ struct rsnd_priv {
	 * below value will be filled on rsnd_adg_probe()
	 */
	void *adg;
	struct clk_hw *null_hw;

	/*
	 * below value will be filled on rsnd_dma_probe()