[v2] ASoC: tlv320aic31xx: Don't call kfree for memory allocated by devm_kzalloc
diff mbox

Message ID 1394982385.19788.4.camel@phoenix
State Accepted
Commit dac7e40404a6b1e7442c01ef4c2e7e149b9627e5
Headers show

Commit Message

Axel Lin March 16, 2014, 3:06 p.m. UTC
The kfree call is not necessary, but we need to call snd_soc_unregister_codec()
in remove().

Signed-off-by: Axel Lin <axel.lin@ingics.com>
---
 sound/soc/codecs/tlv320aic31xx.c | 11 +++--------
 1 file changed, 3 insertions(+), 8 deletions(-)

Comments

Jyri Sarha March 17, 2014, 7:22 a.m. UTC | #1
On 03/16/2014 05:06 PM, Axel Lin wrote:
> The kfree call is not necessary, but we need to call snd_soc_unregister_codec()
> in remove().
>
> Signed-off-by: Axel Lin <axel.lin@ingics.com>

Oops, that is a bad one. Thanks!

Acked-by: Jyri Sarha <jsarha@ti.com>

ps. I found another not as serious bug when I did unload testing with 
this patch. I'll mail a patch shortly.
Mark Brown March 18, 2014, noon UTC | #2
On Sun, Mar 16, 2014 at 11:06:25PM +0800, Axel Lin wrote:
> The kfree call is not necessary, but we need to call snd_soc_unregister_codec()
> in remove().

Applied, thanks.

Patch
diff mbox

diff --git a/sound/soc/codecs/tlv320aic31xx.c b/sound/soc/codecs/tlv320aic31xx.c
index d3517a9..d5d6213 100644
--- a/sound/soc/codecs/tlv320aic31xx.c
+++ b/sound/soc/codecs/tlv320aic31xx.c
@@ -1228,7 +1228,6 @@  static int aic31xx_i2c_probe(struct i2c_client *i2c,
 		return -ENOMEM;
 
 	aic31xx->regmap = devm_regmap_init_i2c(i2c, regmap_config);
-
 	if (IS_ERR(aic31xx->regmap)) {
 		ret = PTR_ERR(aic31xx->regmap);
 		dev_err(&i2c->dev, "Failed to allocate register map: %d\n",
@@ -1241,18 +1240,14 @@  static int aic31xx_i2c_probe(struct i2c_client *i2c,
 
 	aic31xx_device_init(aic31xx);
 
-	ret = snd_soc_register_codec(&i2c->dev, &soc_codec_driver_aic31xx,
+	return snd_soc_register_codec(&i2c->dev, &soc_codec_driver_aic31xx,
 				     aic31xx_dai_driver,
 				     ARRAY_SIZE(aic31xx_dai_driver));
-
-	return ret;
 }
 
 static int aic31xx_i2c_remove(struct i2c_client *i2c)
 {
-	struct aic31xx_priv *aic31xx = dev_get_drvdata(&i2c->dev);
-
-	kfree(aic31xx);
+	snd_soc_unregister_codec(&i2c->dev);
 	return 0;
 }
 
@@ -1274,7 +1269,7 @@  static struct i2c_driver aic31xx_i2c_driver = {
 		.of_match_table = of_match_ptr(tlv320aic31xx_of_match),
 	},
 	.probe		= aic31xx_i2c_probe,
-	.remove		= (aic31xx_i2c_remove),
+	.remove		= aic31xx_i2c_remove,
 	.id_table	= aic31xx_i2c_id,
 };