Index: sys/dev/virtio/scsi/virtio_scsi.c =================================================================== --- sys/dev/virtio/scsi/virtio_scsi.c +++ sys/dev/virtio/scsi/virtio_scsi.c @@ -267,7 +267,7 @@ { struct vtscsi_softc *sc; struct virtio_scsi_config scsicfg; - int error; + int error, rqsize; sc = device_get_softc(dev); sc->vtscsi_dev = dev; @@ -311,6 +311,14 @@ goto fail; } + rqsize = virtqueue_size(sc->vtscsi_request_vq); + if (sc->vtscsi_max_nsegs > rqsize) { + error = E2BIG; + device_printf(dev, "max_nsegs is too big (%d > %d)\n", + sc->vtscsi_max_nsegs, rqsize); + goto fail; + } + error = vtscsi_init_event_vq(sc); if (error) { device_printf(dev, "cannot populate the eventvq\n");