[lvc-project] [PATCH] ASoC: tlv320aic32x4: Prevent division by zero in divider callbacks
Fedor Pchelkin
pchelkin at ispras.ru
Fri Oct 30 12:36:29 MSK 2026
On Fri, 23. Oct 17:08, Alex Kazinsky wrote:
> A zero rate requested through clk_set_rate() or clk_round_rate() reaches
> clk_aic32x4_div_determine_rate() when the minimum rate is zero. Clamping
> the requested rate to the allowed range leaves it unchanged, causing
> division by zero when calculating the divisor.
>
> A zero parent rate can also cause division by zero in determine_rate().
> For example, if reading a parent divider's register fails,
> clk_aic32x4_div_recalc_rate() returns zero, which the clock framework
> caches as the parent's rate. A subsequent rate request for a child
> divider receives this value in best_parent_rate. With a nonzero requested
> rate, the calculated divisor is zero. It passes the existing upper-bound
> check and causes division by zero in the resulting rate calculation.
>
> The set_rate callback can receive a zero rate when an ancestor's rate
> changes. clk_calc_subtree() calculates descendant rates through
> recalc_rate() without calling their determine_rate callbacks. If reading
> a descendant divider's register fails, clk_aic32x4_div_recalc_rate()
> returns zero. This becomes the descendant's new_rate, which
> clk_change_rate() passes to clk_aic32x4_div_set_rate(), causing division
> by zero.
>
> Reject zero rates in both callbacks and reject a zero divisor in
> clk_aic32x4_div_determine_rate().
>
> Found by Linux Verification Center (linuxtesting.org) with SVACE.
>
> Fixes: a51b50062091 ("ASoC: tlv320aic32x4: Model DAC/ADC dividers in CCF")
> Cc: stable at vger.kernel.org
> Signed-off-by: Alex Kazinsky <a.kazinsky at ideco.ru>
> ---
Для веток 5.10 и 6.1 понадобится адаптированная версия патчей только в
lvc-patches at linuxtesting.org, апстримная не применяется. В теме письма
надо будет указать целевые ветки, куда применим патч.
Описание и название патча менять не надо. Если были проведены какие-то
нетривиальные адаптации, их можно кратко указать в комментарии бэкпортёра
https://gitlab.linuxtesting.ru/lvc/guides/-/blob/master/lvc_kernel/patch_dev_stable_porting.md#комментарий-бэкпортёра
'commit ... upstream.' добавлять не надо если патч ещё не дошёл до
апстрима, мы потом добавим когда появится. В остальном всё схоже с
оформлением бэкпортов. В межд. сообщество отправлять не надо, если патч
ещё не дошёл до апстрима (для них это важно).
More information about the lvc-project
mailing list