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. Issue was identified using the coccicheck tool. Signed-off-by: Deepak R Varma <drv@xxxxxxxxx> --- drivers/staging/iio/impedance-analyzer/ad5933.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/staging/iio/impedance-analyzer/ad5933.c b/drivers/staging/iio/impedance-analyzer/ad5933.c index f177b20f0f2d..730bb31a20d8 100644 --- a/drivers/staging/iio/impedance-analyzer/ad5933.c +++ b/drivers/staging/iio/impedance-analyzer/ad5933.c @@ -196,7 +196,7 @@ static int ad5933_set_freq(struct ad5933_state *st, } dat; freqreg = (u64)freq * (u64)(1 << 27); - do_div(freqreg, st->mclk_hz / 4); + freqreg = div64_ul(freqreg, st->mclk_hz / 4); switch (reg) { case AD5933_REG_FREQ_START: -- 2.34.1