ASoC: wm9081: fix resource reclaim in wm9081_register error path

This patch fixes the error path in wm9081_register to properly free resources.

Signed-off-by: Axel Lin <axel.lin@gmail.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>

authored by Axel Lin and committed by Mark Brown 116bcd9c d484366b

+6 -5
+6 -5
sound/soc/codecs/wm9081.c
··· 1356 1356 ret = snd_soc_codec_set_cache_io(codec, 8, 16, control); 1357 1357 if (ret != 0) { 1358 1358 dev_err(codec->dev, "Failed to set cache I/O: %d\n", ret); 1359 - return ret; 1359 + goto err; 1360 1360 } 1361 1361 1362 1362 reg = snd_soc_read(codec, WM9081_SOFTWARE_RESET); ··· 1369 1369 ret = wm9081_reset(codec); 1370 1370 if (ret < 0) { 1371 1371 dev_err(codec->dev, "Failed to issue reset\n"); 1372 - return ret; 1372 + goto err; 1373 1373 } 1374 1374 1375 1375 wm9081_set_bias_level(codec, SND_SOC_BIAS_STANDBY); ··· 1388 1388 ret = snd_soc_register_codec(codec); 1389 1389 if (ret != 0) { 1390 1390 dev_err(codec->dev, "Failed to register codec: %d\n", ret); 1391 - return ret; 1391 + goto err; 1392 1392 } 1393 1393 1394 1394 ret = snd_soc_register_dai(&wm9081_dai); 1395 1395 if (ret != 0) { 1396 1396 dev_err(codec->dev, "Failed to register DAI: %d\n", ret); 1397 - snd_soc_unregister_codec(codec); 1398 - return ret; 1397 + goto err_codec; 1399 1398 } 1400 1399 1401 1400 return 0; 1402 1401 1402 + err_codec: 1403 + snd_soc_unregister_codec(codec); 1403 1404 err: 1404 1405 kfree(wm9081); 1405 1406 return ret;