aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc/codecs/wm8990.c
diff options
context:
space:
mode:
Diffstat (limited to 'sound/soc/codecs/wm8990.c')
-rw-r--r--sound/soc/codecs/wm8990.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/sound/soc/codecs/wm8990.c b/sound/soc/codecs/wm8990.c
index e44153fa38de..dd995ef448b4 100644
--- a/sound/soc/codecs/wm8990.c
+++ b/sound/soc/codecs/wm8990.c
@@ -1500,10 +1500,9 @@ static int wm8990_codec_probe(struct i2c_adapter *adap, int addr, int kind)
1500 client_template.addr = addr; 1500 client_template.addr = addr;
1501 1501
1502 i2c = kmemdup(&client_template, sizeof(client_template), GFP_KERNEL); 1502 i2c = kmemdup(&client_template, sizeof(client_template), GFP_KERNEL);
1503 if (i2c == NULL) { 1503 if (i2c == NULL)
1504 kfree(codec);
1505 return -ENOMEM; 1504 return -ENOMEM;
1506 } 1505
1507 i2c_set_clientdata(i2c, codec); 1506 i2c_set_clientdata(i2c, codec);
1508 codec->control_data = i2c; 1507 codec->control_data = i2c;
1509 1508
@@ -1521,7 +1520,6 @@ static int wm8990_codec_probe(struct i2c_adapter *adap, int addr, int kind)
1521 return ret; 1520 return ret;
1522 1521
1523err: 1522err:
1524 kfree(codec);
1525 kfree(i2c); 1523 kfree(i2c);
1526 return ret; 1524 return ret;
1527} 1525}
@@ -1595,6 +1593,11 @@ static int wm8990_probe(struct platform_device *pdev)
1595#else 1593#else
1596 /* Add other interfaces here */ 1594 /* Add other interfaces here */
1597#endif 1595#endif
1596
1597 if (ret != 0) {
1598 kfree(codec->private_data);
1599 kfree(codec);
1600 }
1598 return ret; 1601 return ret;
1599} 1602}
1600 1603