diff --git a/sound/soc/codecs/ak4642.c b/sound/soc/codecs/ak4642.c
index 60b83b48246712a9155a43a97b16a85b528fa33b..3d7dc55305ec3531838627e7a33f8b22009cfb2f 100644
--- a/sound/soc/codecs/ak4642.c
+++ b/sound/soc/codecs/ak4642.c
@@ -498,8 +498,10 @@ static int ak4642_i2c_probe(struct i2c_client *i2c,
 	codec->control_data = i2c;
 
 	ret = ak4642_init(ak4642);
-	if (ret < 0)
+	if (ret < 0) {
 		printk(KERN_ERR "failed to initialise AK4642\n");
+		kfree(ak4642);
+	}
 
 	return ret;
 }