ASoC: core: Fix use-after-free in snd_soc_exit()
[platform/kernel/linux-rpi.git] / sound / soc / soc-core.c
index 5da7628..1b1749b 100644 (file)
@@ -3366,10 +3366,23 @@ EXPORT_SYMBOL_GPL(snd_soc_of_get_dai_link_codecs);
 
 static int __init snd_soc_init(void)
 {
+       int ret;
+
        snd_soc_debugfs_init();
-       snd_soc_util_init();
+       ret = snd_soc_util_init();
+       if (ret)
+               goto err_util_init;
 
-       return platform_driver_register(&soc_driver);
+       ret = platform_driver_register(&soc_driver);
+       if (ret)
+               goto err_register;
+       return 0;
+
+err_register:
+       snd_soc_util_exit();
+err_util_init:
+       snd_soc_debugfs_exit();
+       return ret;
 }
 module_init(snd_soc_init);