Value comes from DT, so it could be 0. Unlikely, but could be.
Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
---
drivers/i2c/busses/i2c-riic.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/i2c/busses/i2c-riic.c b/drivers/i2c/busses/i2c-riic.c
index f0ee8871d5ae..e43ff483c56e 100644
--- a/drivers/i2c/busses/i2c-riic.c
+++ b/drivers/i2c/busses/i2c-riic.c
@@ -313,7 +313,7 @@ static int riic_init_hw(struct riic_dev *riic, struct i2c_timings *t)
* frequency with only 62 clock ticks max (31 high, 31 low).
* Aim for a duty of 60% LOW, 40% HIGH.
*/
- total_ticks = DIV_ROUND_UP(rate, t->bus_freq_hz);
+ total_ticks = DIV_ROUND_UP(rate, t->bus_freq_hz ?: 1);
for (cks = 0; cks < 7; cks++) {
/*
--
2.35.1
On Wed, 6 Sep 2023, Wolfram Sang wrote:
> Value comes from DT, so it could be 0. Unlikely, but could be.
>
> Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
Hi Wolfram Sang,
> Subject: [PATCH 5/5] i2c: riic: avoid potential division by zero
>
> Value comes from DT, so it could be 0. Unlikely, but could be.
>
> Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
> ---
> drivers/i2c/busses/i2c-riic.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/i2c/busses/i2c-riic.c b/drivers/i2c/busses/i2c-riic.c
> index f0ee8871d5ae..e43ff483c56e 100644
> --- a/drivers/i2c/busses/i2c-riic.c
> +++ b/drivers/i2c/busses/i2c-riic.c
> @@ -313,7 +313,7 @@ static int riic_init_hw(struct riic_dev *riic, struct
> i2c_timings *t)
> * frequency with only 62 clock ticks max (31 high, 31 low).
> * Aim for a duty of 60% LOW, 40% HIGH.
> */
> - total_ticks = DIV_ROUND_UP(rate, t->bus_freq_hz);
> + total_ticks = DIV_ROUND_UP(rate, t->bus_freq_hz ?: 1);
Not sure clamping function min_t/min(t->bus_freq_hz, 1)
Or ternary condition is good in this case for avoiding potential division by 0?
Cheers,
Biju
>
> for (cks = 0; cks < 7; cks++) {
> /*
> --
> 2.35.1
> > - total_ticks = DIV_ROUND_UP(rate, t->bus_freq_hz); > > + total_ticks = DIV_ROUND_UP(rate, t->bus_freq_hz ?: 1); > > Not sure clamping function min_t/min(t->bus_freq_hz, 1) > Or ternary condition is good in this case for avoiding potential division by 0? Both work. I chose the ternary because I believe it involves less computation and a tad tighter syntax.
> Subject: RE: [PATCH 5/5] i2c: riic: avoid potential division by zero > > Hi Wolfram Sang, > > > Subject: [PATCH 5/5] i2c: riic: avoid potential division by zero > > > > Value comes from DT, so it could be 0. Unlikely, but could be. > > > > Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> > > --- > > drivers/i2c/busses/i2c-riic.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/drivers/i2c/busses/i2c-riic.c > > b/drivers/i2c/busses/i2c-riic.c index f0ee8871d5ae..e43ff483c56e > > 100644 > > --- a/drivers/i2c/busses/i2c-riic.c > > +++ b/drivers/i2c/busses/i2c-riic.c > > @@ -313,7 +313,7 @@ static int riic_init_hw(struct riic_dev *riic, > > struct i2c_timings *t) > > * frequency with only 62 clock ticks max (31 high, 31 low). > > * Aim for a duty of 60% LOW, 40% HIGH. > > */ > > - total_ticks = DIV_ROUND_UP(rate, t->bus_freq_hz); > > + total_ticks = DIV_ROUND_UP(rate, t->bus_freq_hz ?: 1); > > Not sure clamping function min_t/min(t->bus_freq_hz, 1) Typo min->max.
© 2016 - 2025 Red Hat, Inc.