| From cb559c24d0f0f1ab6188585f13d5ecc7ee1cbb64 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Mon, 16 Aug 2021 07:25:10 +0200 |
| Subject: ASoC: wcd9335: Fix a double irq free in the remove function |
| |
| From: Christophe JAILLET <christophe.jaillet@wanadoo.fr> |
| |
| [ Upstream commit 7a6a723e98aa45f393e6add18f7309dfffa1b0e2 ] |
| |
| There is no point in calling 'free_irq()' explicitly for |
| 'WCD9335_IRQ_SLIMBUS' in the remove function. |
| |
| The irqs are requested in 'wcd9335_setup_irqs()' using a resource managed |
| function (i.e. 'devm_request_threaded_irq()'). |
| 'wcd9335_setup_irqs()' requests all what is defined in the 'wcd9335_irqs' |
| structure. |
| This structure has only one entry for 'WCD9335_IRQ_SLIMBUS'. |
| |
| So 'devm_request...irq()' + explicit 'free_irq()' would lead to a double |
| free. |
| |
| Remove the unneeded 'free_irq()' from the remove function. |
| |
| Fixes: 20aedafdf492 ("ASoC: wcd9335: add support to wcd9335 codec") |
| Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr> |
| Message-Id: <0614d63bc00edd7e81dd367504128f3d84f72efa.1629091028.git.christophe.jaillet@wanadoo.fr> |
| Signed-off-by: Mark Brown <broonie@kernel.org> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| sound/soc/codecs/wcd9335.c | 1 - |
| 1 file changed, 1 deletion(-) |
| |
| diff --git a/sound/soc/codecs/wcd9335.c b/sound/soc/codecs/wcd9335.c |
| index 86c92e03ea5d..933f59e4e56f 100644 |
| --- a/sound/soc/codecs/wcd9335.c |
| +++ b/sound/soc/codecs/wcd9335.c |
| @@ -4869,7 +4869,6 @@ static void wcd9335_codec_remove(struct snd_soc_component *comp) |
| struct wcd9335_codec *wcd = dev_get_drvdata(comp->dev); |
| |
| wcd_clsh_ctrl_free(wcd->clsh_ctrl); |
| - free_irq(regmap_irq_get_virq(wcd->irq_data, WCD9335_IRQ_SLIMBUS), wcd); |
| } |
| |
| static int wcd9335_codec_set_sysclk(struct snd_soc_component *comp, |
| -- |
| 2.30.2 |
| |