From: Graham Gower <graham.gower@gmail.com>
To: alsa-devel@alsa-project.org
Subject: [PATCH] ASoC: Fix passing platform_data to ac97 bus users and fix a leak.
Date: Wed, 24 Mar 2010 14:59:08 +1030 [thread overview]
Message-ID: <4BA99514.8020708@gmail.com> (raw)
snd_soc_new_ac97_codec() allocates for codec->ac97, snd_soc_new_pcms()
then sets the platform_data. However, snd_ac97_mixer() overwrites
codec->ac97 with its own allocated struct snd_ac97.
Signed-off-by: Graham Gower <graham.gower@gmail.com>
---
sound/soc/codecs/ac97.c | 12 ++++++++++++
1 files changed, 12 insertions(+), 0 deletions(-)
diff --git a/sound/soc/codecs/ac97.c b/sound/soc/codecs/ac97.c
index a1bbe16..64ec797 100644
--- a/sound/soc/codecs/ac97.c
+++ b/sound/soc/codecs/ac97.c
@@ -80,9 +80,11 @@ static int ac97_write(struct snd_soc_codec *codec, unsigned int reg,
static int ac97_soc_probe(struct platform_device *pdev)
{
struct snd_soc_device *socdev = platform_get_drvdata(pdev);
+ struct snd_soc_card *card = socdev->card;
struct snd_soc_codec *codec;
struct snd_ac97_bus *ac97_bus;
struct snd_ac97_template ac97_template;
+ int i;
int ret = 0;
printk(KERN_INFO "AC97 SoC Audio Codec %s\n", AC97_VERSION);
@@ -118,11 +120,21 @@ static int ac97_soc_probe(struct platform_device *pdev)
if (ret < 0)
goto bus_err;
+ /* free the ac97 here so that we don't leak it in snd_ac97_mixer */
+ snd_soc_free_ac97_codec(codec);
+
memset(&ac97_template, 0, sizeof(struct snd_ac97_template));
ret = snd_ac97_mixer(ac97_bus, &ac97_template, &codec->ac97);
if (ret < 0)
goto bus_err;
+ for (i = 0; i < card->num_links; i++) {
+ if (card->dai_link[i].codec_dai->ac97_control) {
+ snd_ac97_dev_add_pdata(codec->ac97,
+ card->dai_link[i].cpu_dai->ac97_pdata);
+ }
+ }
+
return 0;
bus_err:
--
1.6.4
next reply other threads:[~2010-03-24 4:29 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-03-24 4:29 Graham Gower [this message]
2010-03-24 9:23 ` [PATCH] ASoC: Fix passing platform_data to ac97 bus users and fix a leak Liam Girdwood
2010-03-24 13:06 ` Mark Brown
2010-03-25 0:22 ` Graham Gower
2010-03-25 8:55 ` Liam Girdwood
2010-03-25 16:09 ` Mark Brown
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4BA99514.8020708@gmail.com \
--to=graham.gower@gmail.com \
--cc=alsa-devel@alsa-project.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.