DragonFlyBSD Kernel Audit
DF-1940 / fix.diff
← back to finding ↓ download raw
diff --git a/sys/dev/disk/nata/chipsets/ata-intel.c b/sys/dev/disk/nata/chipsets/ata-intel.c
--- a/sys/dev/disk/nata/chipsets/ata-intel.c
+++ b/sys/dev/disk/nata/chipsets/ata-intel.c
@@ -468,6 +468,8 @@
 		heads = atadev->param.heads;
 		sectors = atadev->param.sectors;
 	    }
+	if (heads == 0 || sectors == 0)
+		return;
 	    ATA_IDX_OUTB(ch, ATA_SECTOR, (request->u.ata.lba % sectors)+1);
 	    ATA_IDX_OUTB(ch, ATA_CYL_LSB,
 			 (request->u.ata.lba / (sectors * heads)));