[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