ASoC: codecs: wcd938x: fix unbind tear down order
authorJohan Hovold <johan+linaro@kernel.org>
Tue, 3 Oct 2023 15:55:53 +0000 (17:55 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 25 Oct 2023 10:03:06 +0000 (12:03 +0200)
commit fa2f8a991ba4aa733ac1c3b1be0c86148aa4c52c upstream.

Make sure to deregister the component before tearing down the resources
it depends on during unbind().

Fixes: 16572522aece ("ASoC: codecs: wcd938x-sdw: add SoundWire driver")
Cc: stable@vger.kernel.org # 5.14
Cc: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
Link: https://lore.kernel.org/r/20231003155558.27079-3-johan+linaro@kernel.org
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
sound/soc/codecs/wcd938x.c

index 4343de0..2d4d87c 100644 (file)
@@ -3510,10 +3510,10 @@ static void wcd938x_unbind(struct device *dev)
 {
        struct wcd938x_priv *wcd938x = dev_get_drvdata(dev);
 
+       snd_soc_unregister_component(dev);
        device_link_remove(dev, wcd938x->txdev);
        device_link_remove(dev, wcd938x->rxdev);
        device_link_remove(wcd938x->rxdev, wcd938x->txdev);
-       snd_soc_unregister_component(dev);
        component_unbind_all(dev, wcd938x);
 }