]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
ASoC: Intel: avs: Fix NULL ptr deref on rmmod
authorAmadeusz Sławiński <amadeuszx.slawinski@linux.intel.com>
Tue, 8 Jul 2025 10:50:09 +0000 (12:50 +0200)
committerMark Brown <broonie@kernel.org>
Tue, 8 Jul 2025 13:54:40 +0000 (14:54 +0100)
When uloading snd_soc_avs module there is NULL pointer dereference.
It happens, because codec was moved into pdata and
avs_component_hda_unregister_dais() was not updated.

Fixes: 1581d5c68208 ("ASoC: Intel: avs: boards: Add Kconfig option for obsolete card names")
Reviewed-by: Cezary Rojewski <cezary.rojewski@intel.com>
Signed-off-by: Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com>
Link: https://patch.msgid.link/20250708105009.1883627-1-amadeuszx.slawinski@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/intel/avs/pcm.c

index ccf90428126d8ca674277ba471512633cd777195..0efe490024b06fb4aa6f45a6d8a039e7b1df5f33 100644 (file)
@@ -1570,11 +1570,13 @@ static void avs_component_hda_unregister_dais(struct snd_soc_component *componen
 {
        struct snd_soc_acpi_mach *mach;
        struct snd_soc_dai *dai, *save;
+       struct avs_mach_pdata *pdata;
        struct hda_codec *codec;
        char name[32];
 
        mach = dev_get_platdata(component->card->dev);
-       codec = mach->pdata;
+       pdata = mach->pdata;
+       codec = pdata->codec;
        snprintf(name, sizeof(name), "%s-cpu", dev_name(&codec->core.dev));
 
        for_each_component_dais_safe(component, dai, save) {