+-- On Mon, 27 Nov 2017, Cornelia Huck wrote --+ |The check for align is not really needed, as virtio-1 disallows setting align |anyway.
disallows...? | Checking for !desc is wrong (why shouldn't a driver be able to unset a | descriptor table?) +-- On Mon, 27 Nov 2017, Stefan Hajnoczi wrote --+ | > + if (!vdev->vq[n].vring.num || !desc || !vdev->vq[n].vring.align) { | ... | vdev->vq[n].vring.desc = desc; | | Why !desc? virtio_queue_set_rings virtio_init_region_cache VirtQueue *vq = &vdev->vq[n]; ... addr = vq->vring.desc; if (!addr) { return; } These checks seem to be repeating all over. As mentioned earlier, could these be collated in one place, maybe virtio_queue_get_num()? int virtio_queue_get_num(VirtIODevice *vdev, int n) { VirtQueue *vq = &vdev->vq[n]; if (!vq->.vring.num || !vq->vring.desc || !vq->vring.align) { return 0; /* vq not set */ } return vdev->vq[n].vring.num; } Thank you. -- Prasad J Pandit / Red Hat Product Security Team 47AF CE69 3A90 54AA 9045 1053 DD13 3D32 FE5B 041F