ASoC: tlv320aic31xx: Don't call kfree for memory allocated by devm_kzalloc
Subsystems (3)
PATCH v2 1/1 ASoC: tlv320aic31xx: Don't call kfree for memory allocated by devm_kzalloc
The kfree call is not necessary, but we need to call snd_soc_unregister_codec() in remove().
Signed-off-by Axel Lin <[email protected]>
--- sound/soc/codecs/tlv320aic31xx.c | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-)
sound/soc/codecs/tlv320aic31xx.c +3 -8
@@ -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, };
Signature · 1 line
1.8.1.2
Quoted 4 lines · Axel Lin
The kfree call is not necessary, but we need to call
snd_soc_unregister_codec()inremove().Signed-off-by Axel Lin <[email protected]>
Oops, that is a bad one. Thanks!
Acked-by Jyri Sarha <[email protected]>
ps. I found another not as serious bug when I did unload testing with this patch. I'll mail a patch shortly.
Quoted 2 lines · Axel Lin
The kfree call is not necessary, but we need to call
snd_soc_unregister_codec()inremove().
Applied, thanks.