Message ID | 1566498865-55506-2-git-send-email-raphael.norwitz@nutanix.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [1/2] vhost-user-blk: prevent using uninitialized vqs | expand |
On Thu, Aug 22, 2019 at 11:34:25AM -0700, Raphael Norwitz wrote: > Similar rational to: e6cc11d64fc998c11a4dfcde8fda3fc33a74d844 > > For vhost scsi and vhost-user-scsi an issue was observed > where, of the 3 virtqueues, seabios would only set cmd, > leaving ctrl and event without a physical address. > This can caused vhost_verify_ring_part_mapping to return > ENOMEM, causing the following logs: > > qemu-system-x86_64: Unable to map available ring for ring 0 > qemu-system-x86_64: Verify ring failure on region 0 > > The issue has already been fixed elsewhere, but it was noted > that in backends/vhost-user.c, the vhost_user_backend_dev_init() > function, which other vdevs use in their realize() to initialize > their vqs, was not being properly zeroing out the queues. This > commit ensures hardware modules using the > vhost_user_backend_dev_init() API properly zero out their vqs on > initialization. > > Suggested-by: Philippe Mathieu-Daude <philmd@redhat.com> > Signed-off-by: Raphael Norwitz <raphael.norwitz@nutanix.com> > --- > backends/vhost-user.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
diff --git a/backends/vhost-user.c b/backends/vhost-user.c index 0a13506..2bf3406 100644 --- a/backends/vhost-user.c +++ b/backends/vhost-user.c @@ -46,7 +46,7 @@ vhost_user_backend_dev_init(VhostUserBackend *b, VirtIODevice *vdev, b->vdev = vdev; b->dev.nvqs = nvqs; - b->dev.vqs = g_new(struct vhost_virtqueue, nvqs); + b->dev.vqs = g_new0(struct vhost_virtqueue, nvqs); ret = vhost_dev_init(&b->dev, &b->vhost_user, VHOST_BACKEND_TYPE_USER, 0); if (ret < 0) {
Similar rational to: e6cc11d64fc998c11a4dfcde8fda3fc33a74d844 For vhost scsi and vhost-user-scsi an issue was observed where, of the 3 virtqueues, seabios would only set cmd, leaving ctrl and event without a physical address. This can caused vhost_verify_ring_part_mapping to return ENOMEM, causing the following logs: qemu-system-x86_64: Unable to map available ring for ring 0 qemu-system-x86_64: Verify ring failure on region 0 The issue has already been fixed elsewhere, but it was noted that in backends/vhost-user.c, the vhost_user_backend_dev_init() function, which other vdevs use in their realize() to initialize their vqs, was not being properly zeroing out the queues. This commit ensures hardware modules using the vhost_user_backend_dev_init() API properly zero out their vqs on initialization. Suggested-by: Philippe Mathieu-Daude <philmd@redhat.com> Signed-off-by: Raphael Norwitz <raphael.norwitz@nutanix.com> --- backends/vhost-user.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)