diff --git a/sound/soc/codecs/wm9705.c b/sound/soc/codecs/wm9705.c
index dfffc6c778c0ec2495831487da2c870130e5932c..ec54c6da9856e58dab9d34163f0d57565b9d511f 100644
--- a/sound/soc/codecs/wm9705.c
+++ b/sound/soc/codecs/wm9705.c
@@ -404,6 +404,8 @@ static int wm9705_soc_probe(struct platform_device *pdev)
 
 	return 0;
 
+reset_err:
+	snd_soc_free_pcms(socdev);
 pcm_err:
 	snd_soc_free_ac97_codec(codec);
 codec_err:
diff --git a/sound/soc/codecs/wm9712.c b/sound/soc/codecs/wm9712.c
index 2a0872273007df81ec836a9a4ef5f39aa1c8bcc0..0ac1215dcd9b5e3140b4fa662d44c91f4ec8bc30 100644
--- a/sound/soc/codecs/wm9712.c
+++ b/sound/soc/codecs/wm9712.c
@@ -697,6 +697,8 @@ static int wm9712_soc_probe(struct platform_device *pdev)
 
 	return 0;
 
+reset_err:
+	snd_soc_free_pcms(socdev);
 pcm_err:
 	snd_soc_free_ac97_codec(codec);
 
diff --git a/sound/soc/codecs/wm9713.c b/sound/soc/codecs/wm9713.c
index 00bac315fb3bb97de2df341e8db10a09380b312c..4d74ecb0e56b92d9b99702b9c7251a7251c56df7 100644
--- a/sound/soc/codecs/wm9713.c
+++ b/sound/soc/codecs/wm9713.c
@@ -1249,6 +1249,8 @@ static int wm9713_soc_probe(struct platform_device *pdev)
 
 	return 0;
 
+reset_err:
+	snd_soc_free_pcms(socdev);
 pcm_err:
 	snd_soc_free_ac97_codec(codec);