]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
ASoC: soc-dai: check return value at snd_soc_dai_set_tdm_slot()
authorKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Wed, 12 Feb 2025 02:24:38 +0000 (02:24 +0000)
committerMark Brown <broonie@kernel.org>
Sun, 16 Feb 2025 23:51:03 +0000 (23:51 +0000)
snd_soc_dai_set_tdm_slot() calls .xlate_tdm_slot_mask() or
snd_soc_xlate_tdm_slot_mask(), but didn't check its return value.
Let's check it.

This patch might break existing driver. In such case, let's makes
each func to void instead of int.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://patch.msgid.link/87o6z7yk61.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/soc-dai.c

index 7c4c9127e5f3f7f6659767f62ae48bcfe1786137..8f2b5b840bb08be8bbb38ac8b73bf63e069c1a4d 100644 (file)
@@ -261,10 +261,11 @@ int snd_soc_dai_set_tdm_slot(struct snd_soc_dai *dai,
 
        if (dai->driver->ops &&
            dai->driver->ops->xlate_tdm_slot_mask)
-               dai->driver->ops->xlate_tdm_slot_mask(slots,
-                                                     &tx_mask, &rx_mask);
+               ret = dai->driver->ops->xlate_tdm_slot_mask(slots, &tx_mask, &rx_mask);
        else
-               snd_soc_xlate_tdm_slot_mask(slots, &tx_mask, &rx_mask);
+               ret = snd_soc_xlate_tdm_slot_mask(slots, &tx_mask, &rx_mask);
+       if (ret)
+               goto err;
 
        for_each_pcm_streams(stream)
                snd_soc_dai_tdm_mask_set(dai, stream, *tdm_mask[stream]);
@@ -273,6 +274,7 @@ int snd_soc_dai_set_tdm_slot(struct snd_soc_dai *dai,
            dai->driver->ops->set_tdm_slot)
                ret = dai->driver->ops->set_tdm_slot(dai, tx_mask, rx_mask,
                                                      slots, slot_width);
+err:
        return soc_dai_ret(dai, ret);
 }
 EXPORT_SYMBOL_GPL(snd_soc_dai_set_tdm_slot);