DragonFlyBSD Kernel Audit
DF-1604 / fix.diff
← back to finding ↓ download raw
diff --git a/sys/dev/virtual/virtio/block/virtio_blk.c b/sys/dev/virtual/virtio/block/virtio_blk.c
--- a/sys/dev/virtual/virtio/block/virtio_blk.c
+++ b/sys/dev/virtual/virtio/block/virtio_blk.c
@@ -718,7 +718,8 @@
 		 * If the virtio device is reporting a legacy cylinder count,
 		 * recalculate ncylinders based on the media size
 		 */
-		if (info.d_ncylinders == 16383) {
+		if (info.d_ncylinders == 16383 &&
+		    info.d_nheads != 0 && info.d_secpertrack != 0) {
 			info.d_ncylinders = info.d_media_blocks /
 			    (info.d_nheads * info.d_secpertrack);
 			device_printf(sc->vtblk_dev,