]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
ASoC: rsnd: Fix potential out-of-bounds access of component_dais[]
authorDenis Rastyogin <gerben@altlinux.org>
Fri, 27 Mar 2026 10:33:11 +0000 (13:33 +0300)
committerMark Brown <broonie@kernel.org>
Fri, 3 Apr 2026 12:37:20 +0000 (13:37 +0100)
component_dais[RSND_MAX_COMPONENT] is initially zero-initialized
and later populated in rsnd_dai_of_node(). However, the existing boundary check:
  if (i >= RSND_MAX_COMPONENT)

does not guarantee that the last valid element remains zero. As a result,
the loop can rely on component_dais[RSND_MAX_COMPONENT] being zero,
which may lead to an out-of-bounds access.

Found by Linux Verification Center (linuxtesting.org) with SVACE.

Fixes: 547b02f74e4a ("ASoC: rsnd: enable multi Component support for Audio Graph Card/Card2")
Signed-off-by: Denis Rastyogin <gerben@altlinux.org>
Acked-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://patch.msgid.link/20260327103311.459239-1-gerben@altlinux.org
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/renesas/rcar/core.c

index 69fb19964a71d26184ea2e657eae75fe6f366e97..2dc078358612d796de787d42c119eee87cdf9a7c 100644 (file)
@@ -1974,7 +1974,7 @@ static int rsnd_probe(struct platform_device *pdev)
         *      asoc register
         */
        ci = 0;
-       for (i = 0; priv->component_dais[i] > 0; i++) {
+       for (i = 0; i < RSND_MAX_COMPONENT && priv->component_dais[i] > 0; i++) {
                int nr = priv->component_dais[i];
 
                ret = devm_snd_soc_register_component(dev, &rsnd_soc_component,