]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
ASoC: codecs: fix out-of-bounds access on invalid clock config
authorQasim Ijaz <qasdev00@gmail.com>
Mon, 26 May 2025 19:18:20 +0000 (20:18 +0100)
committerMark Brown <broonie@kernel.org>
Tue, 27 May 2025 11:12:17 +0000 (12:12 +0100)
get_coeff() returns â€“EINVAL when no table entry matches.
The driver then uses that value as an index into coeff_div[],
causing an OOB access.

To fix lets abort the hw_params call instead.

Fixes: de2b3119f9f7 ("ASoC: codecs: add support for ES8375")
Signed-off-by: Qasim Ijaz <qasdev00@gmail.com>
Link: https://patch.msgid.link/20250526191820.72577-1-qasdev00@gmail.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/codecs/es8375.c

index decc86c92427c0c61a1531fb0fed1d9b853449d5..00925963210750b976a382d62bb662822dc214c5 100644 (file)
@@ -319,6 +319,7 @@ static int es8375_hw_params(struct snd_pcm_substream *substream,
        coeff = get_coeff(es8375->vddd, dmic_enable, es8375->mclk_freq, params_rate(params));
        if (coeff < 0) {
                dev_warn(component->dev, "Clock coefficients do not match");
+               return coeff;
        }
        regmap_write(es8375->regmap, ES8375_CLK_MGR4,
                        coeff_div[coeff].Reg0x04);