[dpdk-dev,v3] vhost: Fix wrong handling of virtqueue array index
Commit Message
The patch fixes wrong handling of virtqueue array index when
GET_VRING_BASE message comes.
Signed-off-by: Tetsuya Mukawa <mukawa@igel.co.jp>
---
lib/librte_vhost/vhost_user/virtio-net-user.c | 10 +++-------
1 file changed, 3 insertions(+), 7 deletions(-)
Comments
On 10/28/2015 11:48 AM, Tetsuya Mukawa wrote:
> 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>
> ---
On Wed, Oct 28, 2015 at 12:47:40PM +0900, Tetsuya Mukawa wrote:
> The patch fixes wrong handling of virtqueue array index when
> GET_VRING_BASE message comes.
>
> Signed-off-by: Tetsuya Mukawa <mukawa@igel.co.jp>
> ---
vhost-user segfaults without this patch with MQ enabled.
LGTM
Acked-by: Flavio Leitner <fbl@sysclose.org>
2015-10-29 20:18, Flavio Leitner:
> On Wed, Oct 28, 2015 at 12:47:40PM +0900, Tetsuya Mukawa wrote:
> > The patch fixes wrong handling of virtqueue array index when
> > GET_VRING_BASE message comes.
> >
> > Signed-off-by: Tetsuya Mukawa <mukawa@igel.co.jp>
> > ---
>
> vhost-user segfaults without this patch with MQ enabled.
> LGTM
>
> Acked-by: Flavio Leitner <fbl@sysclose.org>
Applied, thanks
Note: the priority would have been different if the title was
vhost: fix crash with multiqueue enabled
(as committed)
@@ -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;