|
@@ -1661,10 +1661,9 @@ static int wm8753_codec_probe(struct i2c_adapter *adap, int addr, int kind)
|
|
|
client_template.addr = addr;
|
|
|
|
|
|
i2c = kmemdup(&client_template, sizeof(client_template), GFP_KERNEL);
|
|
|
- if (!i2c) {
|
|
|
- kfree(codec);
|
|
|
+ if (!i2c)
|
|
|
return -ENOMEM;
|
|
|
- }
|
|
|
+
|
|
|
i2c_set_clientdata(i2c, codec);
|
|
|
codec->control_data = i2c;
|
|
|
|
|
@@ -1683,7 +1682,6 @@ static int wm8753_codec_probe(struct i2c_adapter *adap, int addr, int kind)
|
|
|
return ret;
|
|
|
|
|
|
err:
|
|
|
- kfree(codec);
|
|
|
kfree(i2c);
|
|
|
return ret;
|
|
|
}
|
|
@@ -1760,6 +1758,11 @@ static int wm8753_probe(struct platform_device *pdev)
|
|
|
#else
|
|
|
/* Add other interfaces here */
|
|
|
#endif
|
|
|
+
|
|
|
+ if (ret != 0) {
|
|
|
+ kfree(codec->private_data);
|
|
|
+ kfree(codec);
|
|
|
+ }
|
|
|
return ret;
|
|
|
}
|
|
|
|