Re: [PATCH 4.9 34/48] ASoC: ops: Reject out of bounds values in snd_soc_put_volsw_sx()

Mark Brown
2022-06-03T10:28:15Z

[-- Attachment #1: Type: text/plain, Size: 912 bytes --]

On Fri, Jun 03, 2022 at 12:06:13PM +0200, Pavel Machek wrote:

> We are getting reports that this commit breaks audio on some
> phones... and indeed it looks like "+ min" is missing in first condition:

> https://github.com/baunilla/android_kernel_xiaomi_rosy/commit/969b9d366c1e9564e173aea325ec544dcd7804ff

> val = ucontrol->value.integer.value[0];
> -￼ if (mc->platform_max && val > mc->platform_max)
> +￼ if (mc->platform_max && ((int)val + min) > mc->platform_max)
> ￼ return -EINVAL;

> What needs to be done to get this fixed?

The downstream kernel platform_max configuration should really be
using the user visible value, not a direct register value. Note
that some of the Qualcomm vendor trees have modifictions to the
semantics of some of the controls which cause issues, and partly
due to this confusion there should be some fixes for their
upstream drivers coming soon.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]