Loading
pwm: loongson: Fix u32 overflow in waveform calculation
mul_u64_u64_div_u64() returns an u64 that might be bigger than U32_MAX. To properly handle this case it must not be directly assigned to an u32 value. Use a wider type for duty and period to make the idiom: duty = mul_u64_u64_div_u64(...) if (duty > U32_MAX) duty = U32_MAX; actually work as intended. Reported-by:Dan Carpenter <dan.carpenter@linaro.org> Link: https://lore.kernel.org/r/44f3c764-8b65-49a9-b3ad-797e9fbb96f5@stanley.mountain Fixes: 2b62c894 ("pwm: Add Loongson PWM controller support") Signed-off-by:
Uwe Kleine-König <u.kleine-koenig@baylibre.com> Reviewed-by:
Binbin Zhou <zhoubinbin@loongson.cn> Link: https://lore.kernel.org/r/20250412122124.1636152-2-u.kleine-koenig@baylibre.com Signed-off-by:
Uwe Kleine-König <ukleinek@kernel.org>