From: Axel Lin <axel.lin@gmail.com>
To: linux-kernel <linux-kernel@vger.kernel.org>
Cc: Liam Girdwood <lrg@slimlogic.co.uk>,
Mark Brown <broonie@opensource.wolfsonmicro.com>,
Jaroslav Kysela <perex@perex.cz>, Takashi Iwai <tiwai@suse.de>,
Tejun Heo <tj@kernel.org>,
Guennadi Liakhovetski <g.liakhovetski@gmx.de>,
alsa-devel@alsa-project.org
Subject: [PATCH 7/12] wm8940: fix resource reclaim in wm8940_register error path
Date: Thu, 15 Jul 2010 11:01:33 +0800 [thread overview]
Message-ID: <1279162893.29294.20.camel@mola> (raw)
In-Reply-To: <1279162147.29294.2.camel@mola>
>From 44c93254e5158e3086c4707148d24746067f6b14 Mon Sep 17 00:00:00 2001
From: Axel Lin <axel.lin@gmail.com>
Date: Thu, 15 Jul 2010 10:13:34 +0800
Subject: [PATCH] wm8940: fix resource reclaim in wm8940_register error path
This patch fixes the error path in wm8940_register to properly free resources.
Signed-off-by: Axel Lin <axel.lin@gmail.com>
---
sound/soc/codecs/wm8940.c | 22 ++++++++++++++--------
1 files changed, 14 insertions(+), 8 deletions(-)
diff --git a/sound/soc/codecs/wm8940.c b/sound/soc/codecs/wm8940.c
index e3c4bbf..9673e6f 100644
--- a/sound/soc/codecs/wm8940.c
+++ b/sound/soc/codecs/wm8940.c
@@ -766,7 +766,8 @@ static int wm8940_register(struct wm8940_priv *wm8940,
u16 reg;
if (wm8940_codec) {
dev_err(codec->dev, "Another WM8940 is registered\n");
- return -EINVAL;
+ ret = -EINVAL;
+ goto err;
}
INIT_LIST_HEAD(&codec->dapm_widgets);
@@ -785,7 +786,7 @@ static int wm8940_register(struct wm8940_priv *wm8940,
ret = snd_soc_codec_set_cache_io(codec, 8, 16, control);
if (ret < 0) {
dev_err(codec->dev, "Failed to set cache I/O: %d\n", ret);
- return ret;
+ goto err;
}
memcpy(codec->reg_cache, wm8940_reg_defaults,
@@ -794,7 +795,7 @@ static int wm8940_register(struct wm8940_priv *wm8940,
ret = wm8940_reset(codec);
if (ret < 0) {
dev_err(codec->dev, "Failed to issue reset\n");
- return ret;
+ goto err;
}
wm8940_dai.dev = codec->dev;
@@ -803,7 +804,7 @@ static int wm8940_register(struct wm8940_priv *wm8940,
ret = snd_soc_write(codec, WM8940_POWER1, 0x180);
if (ret < 0)
- return ret;
+ goto err;
if (!pdata)
dev_warn(codec->dev, "No platform data supplied\n");
@@ -811,7 +812,7 @@ static int wm8940_register(struct wm8940_priv *wm8940,
reg = snd_soc_read(codec, WM8940_OUTPUTCTL);
ret = snd_soc_write(codec, WM8940_OUTPUTCTL, reg | pdata->vroi);
if (ret < 0)
- return ret;
+ goto err;
}
@@ -820,17 +821,22 @@ static int wm8940_register(struct wm8940_priv *wm8940,
ret = snd_soc_register_codec(codec);
if (ret) {
dev_err(codec->dev, "Failed to register codec: %d\n", ret);
- return ret;
+ goto err;
}
ret = snd_soc_register_dai(&wm8940_dai);
if (ret) {
dev_err(codec->dev, "Failed to register DAI: %d\n", ret);
- snd_soc_unregister_codec(codec);
- return ret;
+ goto err_codec;
}
return 0;
+
+err_codec:
+ snd_soc_unregister_codec(codec);
+err:
+ kfree(wm8940);
+ return ret;
}
static void wm8940_unregister(struct wm8940_priv *wm8940)
--
1.5.4.3
next prev parent reply other threads:[~2010-07-15 3:01 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-07-15 2:49 [PATCH 0/12] sound/alsa/soc/codec: fix memory leak and resource relaim in error path Axel Lin
2010-07-15 2:50 ` [PATCH 1/12] ad1836: fix a memory leak if another ad1836 is registered Axel Lin
2010-07-20 10:31 ` Barry Song
2010-07-20 10:31 ` Barry Song
2010-07-15 2:52 ` [PATCH 2/12] ak4642: fix a memory leak if failed to initialise AK4642 Axel Lin
2010-07-15 5:53 ` Kuninori Morimoto
2010-07-15 5:53 ` Kuninori Morimoto
2010-07-15 6:19 ` Axel Lin
2010-07-15 6:19 ` Axel Lin
2010-07-15 6:29 ` Kuninori Morimoto
2010-07-15 6:29 ` Kuninori Morimoto
2010-07-15 2:53 ` [PATCH 3/12] da7210: fix a memory leak if failed to initialise da7210 audio codec Axel Lin
2010-07-15 2:56 ` [PATCH 4/12] wm8523: fix resource reclaim in wm8523_register error path Axel Lin
2010-07-15 2:57 ` [PATCH 5/12] wm8711: fix a memory leak if another WM8711 is registered Axel Lin
2010-07-15 2:59 ` [PATCH 6/12] wm8904: fix resource reclaim in wm8904_register error path Axel Lin
2010-07-15 3:01 ` Axel Lin [this message]
2010-07-15 7:04 ` [PATCH 7/12] wm8940: fix resource reclaim in wm8940_register " Guennadi Liakhovetski
2010-07-15 7:04 ` Guennadi Liakhovetski
2010-07-15 7:42 ` Axel Lin
2010-07-15 7:42 ` Axel Lin
2010-07-15 7:59 ` Guennadi Liakhovetski
2010-07-15 7:59 ` Guennadi Liakhovetski
2010-07-15 8:54 ` Liam Girdwood
2010-07-15 8:54 ` Liam Girdwood
2010-07-15 7:48 ` [PATCH v2 7/12] wm8940: fix a memory leak if wm8940_register return error Axel Lin
2010-07-15 3:03 ` [PATCH 8/12] wm8955: fix resource reclaim in wm8955_register error path Axel Lin
2010-07-15 3:06 ` [PATCH 9/12] wm8961: fix resource reclaim in wm8961_register " Axel Lin
2010-07-15 3:07 ` [PATCH 10/12] wm8974: fix a memory leak if another WM8974 is registered Axel Lin
2010-07-15 3:08 ` [PATCH 11/12] wm8978: fix a memory leak if another WM8978 " Axel Lin
2010-07-15 8:37 ` [PATCH v2 " Axel Lin
2010-07-15 8:53 ` Guennadi Liakhovetski
2010-07-15 8:53 ` Guennadi Liakhovetski
2010-07-15 3:11 ` [PATCH 12/12] wm9081: fix resource reclaim in wm9081_register error path Axel Lin
2010-07-15 8:59 ` [PATCH 0/12] sound/alsa/soc/codec: fix memory leak and resource relaim in " Mark Brown
2010-07-15 8:59 ` Mark Brown
2010-07-19 1:41 ` Axel Lin
2010-07-19 1:41 ` Axel Lin
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=1279162893.29294.20.camel@mola \
--to=axel.lin@gmail.com \
--cc=alsa-devel@alsa-project.org \
--cc=broonie@opensource.wolfsonmicro.com \
--cc=g.liakhovetski@gmx.de \
--cc=linux-kernel@vger.kernel.org \
--cc=lrg@slimlogic.co.uk \
--cc=perex@perex.cz \
--cc=tiwai@suse.de \
--cc=tj@kernel.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.