From: Changcheng Deng <deng.changcheng@xxxxxxxxxx> do_div() does a 64-by-32 division. Here the divisor is an unsigned long which on some platforms is 64 bit wide. So use div64_ul instead of do_div to avoid a possible truncation. Reported-by: Zeal Robot <zealci@xxxxxxxxxx> Signed-off-by: Changcheng Deng <deng.changcheng@xxxxxxxxxx> --- drivers/clk/tegra/clk-utils.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/clk/tegra/clk-utils.c b/drivers/clk/tegra/clk-utils.c index 1a5daae4e501..12658add9dd7 100644 --- a/drivers/clk/tegra/clk-utils.c +++ b/drivers/clk/tegra/clk-utils.c @@ -26,7 +26,7 @@ int div_frac_get(unsigned long rate, unsigned parent_rate, u8 width, if (flags & TEGRA_DIVIDER_ROUND_UP) divider_ux1 += rate - 1; - do_div(divider_ux1, rate); + divider_ux1 = div64_ul(divider_ux1, rate); if (flags & TEGRA_DIVIDER_INT) divider_ux1 *= mul; -- 2.25.1