[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 39/39] vhost-user-blk: Fail gracefully on too large queue size
From: |
Kevin Wolf |
Subject: |
[PULL 39/39] vhost-user-blk: Fail gracefully on too large queue size |
Date: |
Fri, 30 Apr 2021 12:51:47 +0200 |
virtio_add_queue() aborts when queue_size > VIRTQUEUE_MAX_SIZE, so
vhost_user_blk_device_realize() should check this before calling it.
Simple reproducer:
qemu-system-x86_64 \
-chardev null,id=foo \
-device vhost-user-blk-pci,queue-size=4096,chardev=foo
Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1935014
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Message-Id: <20210413165654.50810-1-kwolf@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: Raphael Norwitz <raphael.norwitz@nutanix.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
---
hw/block/vhost-user-blk.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/hw/block/vhost-user-blk.c b/hw/block/vhost-user-blk.c
index 0b5b9d44cd..f5e9682703 100644
--- a/hw/block/vhost-user-blk.c
+++ b/hw/block/vhost-user-blk.c
@@ -467,6 +467,11 @@ static void vhost_user_blk_device_realize(DeviceState
*dev, Error **errp)
error_setg(errp, "vhost-user-blk: queue size must be non-zero");
return;
}
+ if (s->queue_size > VIRTQUEUE_MAX_SIZE) {
+ error_setg(errp, "vhost-user-blk: queue size must not exceed %d",
+ VIRTQUEUE_MAX_SIZE);
+ return;
+ }
if (!vhost_user_init(&s->vhost_user, &s->chardev, errp)) {
return;
--
2.30.2
- [PULL 24/39] block/backup-top: drop .active, (continued)
- [PULL 24/39] block/backup-top: drop .active, Kevin Wolf, 2021/04/30
- [PULL 25/39] block: drop ignore_children for permission update functions, Kevin Wolf, 2021/04/30
- [PULL 29/39] block: bdrv_reopen_multiple(): move bdrv_flush to separate pre-prepare, Kevin Wolf, 2021/04/30
- [PULL 33/39] block: inline bdrv_replace_child(), Kevin Wolf, 2021/04/30
- [PULL 28/39] block: add bdrv_set_backing_noperm() transaction action, Kevin Wolf, 2021/04/30
- [PULL 34/39] block: refactor bdrv_child_set_perm_safe() transaction action, Kevin Wolf, 2021/04/30
- [PULL 30/39] block: bdrv_reopen_multiple: refresh permissions on updated graph, Kevin Wolf, 2021/04/30
- [PULL 36/39] block: refactor bdrv_node_check_perm(), Kevin Wolf, 2021/04/30
- [PULL 31/39] block: drop unused permission update functions, Kevin Wolf, 2021/04/30
- [PULL 32/39] block: inline bdrv_check_perm_common(), Kevin Wolf, 2021/04/30
- [PULL 39/39] vhost-user-blk: Fail gracefully on too large queue size,
Kevin Wolf <=
- [PULL 37/39] block: Add BDRV_O_NO_SHARE for blk_new_open(), Kevin Wolf, 2021/04/30
- [PULL 35/39] block: rename bdrv_replace_child_safe() to bdrv_replace_child(), Kevin Wolf, 2021/04/30
- [PULL 38/39] qemu-img convert: Unshare write permission for source, Kevin Wolf, 2021/04/30
- Re: [PULL 00/39] Block layer patches, Peter Maydell, 2021/04/30