mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-04-06 09:04:22 -04:00
ASoC: cs48l32: Fix a signedness bug in cs48l32_hw_params()
There is a type promotion that can happen when freq(u32) variable is
comapared with sclk_target(integer), when sclk_target is a negative
value it promotes to a large postive integer which might not be a
problem in this particular case as the condition evaluates to false
when that happens, but bail out early when sclk_target has negative
error codes.
cs48l32_sclk_rates[i].freq >= sclk_target
Fix this by adding a negative error check when
snd_soc_tdm_params_to_bclk() fails
Fixes: e2bcbf99d0 ("ASoC: cs48l32: Add driver for Cirrus Logic CS48L32 audio DSP")
Signed-off-by: Harshit Mogalapalli <harshit.m.mogalapalli@oracle.com>
Link: https://patch.msgid.link/20250603214813.197346-1-harshit.m.mogalapalli@oracle.com
Reviewed-by: Richard Fitzgerald <rf@opensource.cirrus.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
committed by
Mark Brown
parent
19272b37aa
commit
22188b9df6
@@ -2162,6 +2162,10 @@ static int cs48l32_hw_params(struct snd_pcm_substream *substream,
|
||||
n_slots_multiple = 1;
|
||||
|
||||
sclk_target = snd_soc_tdm_params_to_bclk(params, slotw, n_slots, n_slots_multiple);
|
||||
if (sclk_target < 0) {
|
||||
cs48l32_asp_err(dai, "Invalid parameters\n");
|
||||
return sclk_target;
|
||||
}
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(cs48l32_sclk_rates); i++) {
|
||||
if ((cs48l32_sclk_rates[i].freq >= sclk_target) &&
|
||||
|
||||
Reference in New Issue
Block a user