linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2] ASoC: wm9713: fix regmap free path
@ 2016-02-20 19:44 Robert Jarzmik
  2016-02-21 10:12 ` [alsa-devel] " Lars-Peter Clausen
  0 siblings, 1 reply; 3+ messages in thread
From: Robert Jarzmik @ 2016-02-20 19:44 UTC (permalink / raw)
  To: Liam Girdwood, Mark Brown, Jaroslav Kysela, Takashi Iwai
  Cc: patches, alsa-devel, linux-kernel, Robert Jarzmik

In the conversion to regmap, I assumed that the 2 following functions
was working symetrically:
 - snd_soc_codec_init_regmap()
 - snd_soc_codec_exit_regmap(codec)

As a mater of fact with the current code the regmap is freed twice
because of the devm_() call:
(mutex_lock) from (debugfs_remove_recursive+0x50/0x1d0)
(debugfs_remove_recursive) from (regmap_debugfs_exit+0x1c/0xd4)
(regmap_debugfs_exit) from (regmap_exit+0x28/0xc8)
(regmap_exit) from (release_nodes+0x18c/0x204)
(release_nodes) from (device_release+0x18/0x90)
(device_release) from (kobject_release+0x90/0x1bc)
(kobject_release) from (wm9713_soc_remove+0x1c/0x24)
(wm9713_soc_remove) from (soc_remove_component+0x50/0x7c)
(soc_remove_component) from (soc_remove_dai_links+0x118/0x228)
(soc_remove_dai_links) from (snd_soc_register_card+0x4e4/0xdd4)
(snd_soc_register_card) from (devm_snd_soc_register_card+0x34/0x70)

Fix this by removing the doubled regmap free.

Fixes: 700dadfefc3d ASoC: wm9713: convert to regmap
Signed-off-by: Robert Jarzmik <robert.jarzmik@free.fr>
---
Since v1: fix the diff second hunk, god knows where it came from.
---
 sound/soc/codecs/wm9713.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/sound/soc/codecs/wm9713.c b/sound/soc/codecs/wm9713.c
index 79e143625ac3..dd31a5207527 100644
--- a/sound/soc/codecs/wm9713.c
+++ b/sound/soc/codecs/wm9713.c
@@ -1230,7 +1230,6 @@ static int wm9713_soc_remove(struct snd_soc_codec *codec)
 {
 	struct wm9713_priv *wm9713 = snd_soc_codec_get_drvdata(codec);
 
-	snd_soc_codec_exit_regmap(codec);
 	snd_soc_free_ac97_codec(wm9713->ac97);
 	return 0;
 }
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [alsa-devel] [PATCH v2] ASoC: wm9713: fix regmap free path
  2016-02-20 19:44 [PATCH v2] ASoC: wm9713: fix regmap free path Robert Jarzmik
@ 2016-02-21 10:12 ` Lars-Peter Clausen
  2016-02-22  2:53   ` Mark Brown
  0 siblings, 1 reply; 3+ messages in thread
From: Lars-Peter Clausen @ 2016-02-21 10:12 UTC (permalink / raw)
  To: Robert Jarzmik, Liam Girdwood, Mark Brown, Jaroslav Kysela,
	Takashi Iwai
  Cc: alsa-devel, patches, linux-kernel

On 02/20/2016 08:44 PM, Robert Jarzmik wrote:
> In the conversion to regmap, I assumed that the 2 following functions
> was working symetrically:
>  - snd_soc_codec_init_regmap()
>  - snd_soc_codec_exit_regmap(codec)
> 
> As a mater of fact with the current code the regmap is freed twice
> because of the devm_() call:
> (mutex_lock) from (debugfs_remove_recursive+0x50/0x1d0)
> (debugfs_remove_recursive) from (regmap_debugfs_exit+0x1c/0xd4)
> (regmap_debugfs_exit) from (regmap_exit+0x28/0xc8)
> (regmap_exit) from (release_nodes+0x18c/0x204)
> (release_nodes) from (device_release+0x18/0x90)
> (device_release) from (kobject_release+0x90/0x1bc)
> (kobject_release) from (wm9713_soc_remove+0x1c/0x24)
> (wm9713_soc_remove) from (soc_remove_component+0x50/0x7c)
> (soc_remove_component) from (soc_remove_dai_links+0x118/0x228)
> (soc_remove_dai_links) from (snd_soc_register_card+0x4e4/0xdd4)
> (snd_soc_register_card) from (devm_snd_soc_register_card+0x34/0x70)
> 
> Fix this by removing the doubled regmap free.

The correct fix is to use the non devm variant of regmap_init_ac97() in this
case. Device managed functions should only be used from inside a struct
device probe function.

- Lars

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [alsa-devel] [PATCH v2] ASoC: wm9713: fix regmap free path
  2016-02-21 10:12 ` [alsa-devel] " Lars-Peter Clausen
@ 2016-02-22  2:53   ` Mark Brown
  0 siblings, 0 replies; 3+ messages in thread
From: Mark Brown @ 2016-02-22  2:53 UTC (permalink / raw)
  To: Lars-Peter Clausen
  Cc: Robert Jarzmik, Liam Girdwood, Jaroslav Kysela, Takashi Iwai,
	alsa-devel, patches, linux-kernel

[-- Attachment #1: Type: text/plain, Size: 429 bytes --]

On Sun, Feb 21, 2016 at 11:12:51AM +0100, Lars-Peter Clausen wrote:
> On 02/20/2016 08:44 PM, Robert Jarzmik wrote:

> > Fix this by removing the doubled regmap free.

> The correct fix is to use the non devm variant of regmap_init_ac97() in this
> case. Device managed functions should only be used from inside a struct
> device probe function.

Gah, didn't notice that we allocate in the non-default probe function :/
Dropped.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 473 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2016-02-22 14:55 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-02-20 19:44 [PATCH v2] ASoC: wm9713: fix regmap free path Robert Jarzmik
2016-02-21 10:12 ` [alsa-devel] " Lars-Peter Clausen
2016-02-22  2:53   ` Mark Brown

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).