В ядре Linux устранена следующая уязвимость:
ASoC: кодеки: lpass-wsa-macro: исправить доступ к enum kcontrol. EAR SPKR PA Gain» и четыре элемента управления «WSA RX* Mux» перечислены.
но их обратные вызовы get и put получают доступ к значению через
ucontrol->value.integer.value[0] (длинное) вместо
ucontrol->value.enumerated.item[0] (беззнаковое целое число). Эта же закономерность была исправлена в родственных драйверах
commit bcfe5f76cc40 («ASoC: кодеки: rx-macro: исправить доступ к массиву
за пределами для типа перечисления") и
commit 0ea5eff7c606 («ASoC: кодеки: va-macro: исправить доступ к массиву
вне границ для типа перечисления"), но макрос wsa был пропущен.
В 64-битных ядрах с CONFIG_SND_CTL_DEBUG это сбивает значение элемента.
проверка работоспособности, и каждое чтение этих элементов управления завершается с ошибкой -EINVAL.
Показать оригинальное описание (EN)
In the Linux kernel, the following vulnerability has been resolved: ASoC: codecs: lpass-wsa-macro: Fix enum kcontrol accesses EAR SPKR PA Gain" and the four "WSA RX* Mux" controls are enumerated, but their get and put callbacks access the value through ucontrol->value.integer.value[0] (a long) instead of ucontrol->value.enumerated.item[0] (an unsigned int). This same pattern was fixed in the sibling drivers by commit bcfe5f76cc40 ("ASoC: codecs: rx-macro: fix accessing array out of bounds for enum type") and commit 0ea5eff7c606 ("ASoC: codecs: va-macro: fix accessing array out of bounds for enum type"), but wsa-macro was missed. On 64-bit kernels with CONFIG_SND_CTL_DEBUG this trips the elem value sanity check and every read of these controls fails with -EINVAL.