Protect against dividing by zero.
authorPeter Avalos <pavalos@dragonflybsd.org>
Thu, 29 Nov 2007 03:10:24 +0000 (03:10 +0000)
committerPeter Avalos <pavalos@dragonflybsd.org>
Thu, 29 Nov 2007 03:10:24 +0000 (03:10 +0000)
Obtained-from: FreeBSD

sys/bus/cam/scsi/scsi_all.c

index 607193d..d0d727b 100644 (file)
@@ -27,7 +27,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/cam/scsi/scsi_all.c,v 1.14.2.11 2003/10/30 15:06:35 thomas Exp $
- * $DragonFly: src/sys/bus/cam/scsi/scsi_all.c,v 1.24 2007/11/28 21:45:02 pavalos Exp $
+ * $DragonFly: src/sys/bus/cam/scsi/scsi_all.c,v 1.25 2007/11/29 03:10:24 pavalos Exp $
  */
 
 #include <sys/param.h>
@@ -2315,6 +2315,15 @@ scsi_calc_syncsrate(u_int period_factor)
        int i;
        int num_syncrates;
 
+       /*
+        * It's a bug if period is zero, but if it is anyway, don't
+        * die with a divide fault- instead return something which
+        * 'approximates' async
+        */
+       if (period_factor == 0) {
+               return (3300);
+       }
+
        num_syncrates = sizeof(scsi_syncrates) / sizeof(scsi_syncrates[0]);
        /* See if the period is in the "exception" table */
        for (i = 0; i < num_syncrates; i++) {