On Thu, Dec 05, 2013 at 01:06:13PM +0100, Jean Delvare wrote: > Hi Dan, > > On Thu, 5 Dec 2013 13:58:45 +0300, Dan Carpenter wrote: > > It's not enough to just test if "rpm" is zero, the "rpm * div" operation > > could overflow and that could also lead to a divide by zero. > > If you believe an overflow can happen (and indeed it can) then this > isn't the way to handle it. Avoiding a divide by zero is certainly nice > but properly handling the other overflow cases too would be better. > > In practice, this means for the vt8231 driver: > > if (rpm == 0 || rpm > 1310720) > return 0; > > and for the lm78 and sis5595 drivers: > > if (rpm <= 0) > return 255; > if (rpm > 1350000) > return 0; > > That way you're certain to never overflow (the maximum value for div is > 8), and insanely large values are handled properly instead of resulting > in random register values. Yes. I will resend. regards, dan carpenter _______________________________________________ lm-sensors mailing list lm-sensors@xxxxxxxxxxxxxx http://lists.lm-sensors.org/mailman/listinfo/lm-sensors