vhost: fix crash with multiqueue enabled

The patch fixes wrong handling of virtqueue array index when
GET_VRING_BASE message comes.

Signed-off-by: Tetsuya Mukawa <mukawa@igel.co.jp>
Acked-by: Huawei Xie <huawei.xie@intel.com>
Acked-by: Flavio Leitner <fbl@sysclose.org>
This commit is contained in:
Tetsuya Mukawa 2015-10-28 12:47:40 +09:00 committed by Thomas Monjalon
parent f53577f069
commit 07d37fbf5e

View File

@ -300,13 +300,9 @@ user_get_vring_base(struct vhost_device_ctx ctx,
* sent and only sent in vhost_vring_stop.
* TODO: cleanup the vring, it isn't usable since here.
*/
if (dev->virtqueue[state->index + VIRTIO_RXQ]->kickfd >= 0) {
close(dev->virtqueue[state->index + VIRTIO_RXQ]->kickfd);
dev->virtqueue[state->index + VIRTIO_RXQ]->kickfd = -1;
}
if (dev->virtqueue[state->index + VIRTIO_TXQ]->kickfd >= 0) {
close(dev->virtqueue[state->index + VIRTIO_TXQ]->kickfd);
dev->virtqueue[state->index + VIRTIO_TXQ]->kickfd = -1;
if (dev->virtqueue[state->index]->kickfd >= 0) {
close(dev->virtqueue[state->index]->kickfd);
dev->virtqueue[state->index]->kickfd = -1;
}
return 0;