]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
ASoC: mediatek: mt8192: Release reserved memory on cleanup
authorCássio Gabriel <cassiogabrielcontato@gmail.com>
Wed, 27 May 2026 13:55:46 +0000 (10:55 -0300)
committerMark Brown <broonie@kernel.org>
Tue, 2 Jun 2026 15:13:05 +0000 (16:13 +0100)
The MT8192 AFE probe calls of_reserved_mem_device_init() and falls
back to preallocated buffers when no reserved memory region is
available. When the reserved memory assignment succeeds, however, the
driver never releases it.

Register a devm cleanup action after a successful reserved-memory
assignment so the assignment is released on probe failure and driver
unbind.

Fixes: ec4a10ca4a68 ("ASoC: mediatek: use reserved memory or enable buffer pre-allocation")
Cc: stable@vger.kernel.org
Signed-off-by: Cássio Gabriel <cassiogabrielcontato@gmail.com>
Link: https://patch.msgid.link/20260527-asoc-mt8192-probe-cleanup-v1-1-1bb834d05b72@gmail.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/mediatek/mt8192/mt8192-afe-pcm.c

index 3d32fe46118ece974063ba8fded34958289d5ba7..9f5057eeeff970ac52525d812a57fccd72cce35c 100644 (file)
@@ -2155,6 +2155,11 @@ static const dai_register_cb dai_register_cbs[] = {
        mt8192_dai_memif_register,
 };
 
+static void mt8192_afe_release_reserved_mem(void *data)
+{
+       of_reserved_mem_device_release(data);
+}
+
 static int mt8192_afe_pcm_dev_probe(struct platform_device *pdev)
 {
        struct mtk_base_afe *afe;
@@ -2184,6 +2189,10 @@ static int mt8192_afe_pcm_dev_probe(struct platform_device *pdev)
        if (ret) {
                dev_info(dev, "no reserved memory found, pre-allocating buffers instead\n");
                afe->preallocate_buffers = true;
+       } else {
+               ret = devm_add_action_or_reset(dev, mt8192_afe_release_reserved_mem, dev);
+               if (ret)
+                       return ret;
        }
 
        /* init audio related clock */