search for: iov_limit

Displaying 20 results from an estimated 111 matches for "iov_limit".

Did you mean: io_limit
2020 Jun 17
4
[PATCH RFC v8 02/11] vhost: use batched get_vq_desc version
...; static void vhost_vq_free_iovecs(struct vhost_virtqueue *vq) > { > kfree(vq->descs); > @@ -394,6 +400,9 @@ static long vhost_dev_alloc_iovecs(struct vhost_dev *dev) > for (i = 0; i < dev->nvqs; ++i) { > vq = dev->vqs[i]; > vq->max_descs = dev->iov_limit; > + if (vhost_vq_num_batch_descs(vq) < 0) { > + return -EINVAL; > + } This check breaks vdpa which set iov_limit to zero. Consider iov_limit is meaningless to vDPA, I wonder we can skip the test when device doesn't use worker. Thanks
2020 Jun 17
4
[PATCH RFC v8 02/11] vhost: use batched get_vq_desc version
...; static void vhost_vq_free_iovecs(struct vhost_virtqueue *vq) > { > kfree(vq->descs); > @@ -394,6 +400,9 @@ static long vhost_dev_alloc_iovecs(struct vhost_dev *dev) > for (i = 0; i < dev->nvqs; ++i) { > vq = dev->vqs[i]; > vq->max_descs = dev->iov_limit; > + if (vhost_vq_num_batch_descs(vq) < 0) { > + return -EINVAL; > + } This check breaks vdpa which set iov_limit to zero. Consider iov_limit is meaningless to vDPA, I wonder we can skip the test when device doesn't use worker. Thanks
2019 Oct 14
2
[PATCH RFC v1 1/2] vhost: option to fetch descriptors through an independent struct
...> vq->indirect = NULL; >>> kfree(vq->log); >>> @@ -385,6 +389,10 @@ static long vhost_dev_alloc_iovecs(struct vhost_dev *dev) >>> for (i = 0; i < dev->nvqs; ++i) { >>> vq = dev->vqs[i]; >>> + vq->max_descs = dev->iov_limit; >>> + vq->descs = kmalloc_array(vq->max_descs, >>> + sizeof(*vq->descs), >>> + GFP_KERNEL); >> >> Is iov_limit too much here? It can obviously increase the footprint. I guess >> the batching can only be done for descriptor without...
2019 Oct 14
2
[PATCH RFC v1 1/2] vhost: option to fetch descriptors through an independent struct
...> vq->indirect = NULL; >>> kfree(vq->log); >>> @@ -385,6 +389,10 @@ static long vhost_dev_alloc_iovecs(struct vhost_dev *dev) >>> for (i = 0; i < dev->nvqs; ++i) { >>> vq = dev->vqs[i]; >>> + vq->max_descs = dev->iov_limit; >>> + vq->descs = kmalloc_array(vq->max_descs, >>> + sizeof(*vq->descs), >>> + GFP_KERNEL); >> >> Is iov_limit too much here? It can obviously increase the footprint. I guess >> the batching can only be done for descriptor without...
2019 May 17
0
[PATCH V2 1/4] vhost: introduce vhost_exceeds_weight()
...& total_len >= dev->byte_weight) || + pkts >= dev->weight) { + vhost_poll_queue(&vq->poll); + return true; + } + + return false; +} +EXPORT_SYMBOL_GPL(vhost_exceeds_weight); + void vhost_dev_init(struct vhost_dev *dev, - struct vhost_virtqueue **vqs, int nvqs, int iov_limit) + struct vhost_virtqueue **vqs, int nvqs, + int iov_limit, int weight, int byte_weight) { struct vhost_virtqueue *vq; int i; @@ -428,6 +444,8 @@ void vhost_dev_init(struct vhost_dev *dev, dev->mm = NULL; dev->worker = NULL; dev->iov_limit = iov_limit; + dev->weight...
2019 Sep 23
0
[PATCH] vhost: It's better to use size_t for the 3rd parameter of vhost_exceeds_weight()
...int pkts, size_t total_len) > { > struct vhost_dev *dev = vq->dev; > > @@ -454,7 +454,7 @@ static size_t vhost_get_desc_size(struct vhost_virtqueue *vq, > > void vhost_dev_init(struct vhost_dev *dev, > struct vhost_virtqueue **vqs, int nvqs, > - int iov_limit, int weight, int byte_weight) > + int iov_limit, int weight, size_t byte_weight) > { > struct vhost_virtqueue *vq; > int i; > diff --git a/drivers/vhost/vhost.h b/drivers/vhost/vhost.h > index e9ed272..8d80389d 100644 > --- a/drivers/vhost/vhost.h > +++ b/drivers/v...
2019 Sep 25
0
[PATCH] vhost: It's better to use size_t for the 3rd parameter of vhost_exceeds_weight()
...;> struct vhost_dev *dev = vq->dev; >> >> @@ -454,7 +454,7 @@ static size_t vhost_get_desc_size(struct >> vhost_virtqueue *vq, >> >> void vhost_dev_init(struct vhost_dev *dev, >> struct vhost_virtqueue **vqs, int nvqs, >> - int iov_limit, int weight, int byte_weight) >> + int iov_limit, int weight, size_t byte_weight) >> { >> struct vhost_virtqueue *vq; >> int i; >> diff --git a/drivers/vhost/vhost.h b/drivers/vhost/vhost.h index >> e9ed272..8d80389d 100644 >> --- a/drivers/vho...
2019 Jul 23
1
[PATCH 2/6] vhost: validate MMU notifier registration
...d, 16 insertions(+), 4 deletions(-) > > diff --git a/drivers/vhost/vhost.c b/drivers/vhost/vhost.c > index 34c0d970bcbc..058191d5efad 100644 > --- a/drivers/vhost/vhost.c > +++ b/drivers/vhost/vhost.c > @@ -630,6 +630,7 @@ void vhost_dev_init(struct vhost_dev *dev, > dev->iov_limit = iov_limit; > dev->weight = weight; > dev->byte_weight = byte_weight; > + dev->has_notifier = false; > init_llist_head(&dev->work_list); > init_waitqueue_head(&dev->wait); > INIT_LIST_HEAD(&dev->read_list); > @@ -731,6 +732,7 @@ long vho...
2019 Oct 12
2
[PATCH RFC v1 1/2] vhost: option to fetch descriptors through an independent struct
...0; > kfree(vq->indirect); > vq->indirect = NULL; > kfree(vq->log); > @@ -385,6 +389,10 @@ static long vhost_dev_alloc_iovecs(struct vhost_dev *dev) > > for (i = 0; i < dev->nvqs; ++i) { > vq = dev->vqs[i]; > + vq->max_descs = dev->iov_limit; > + vq->descs = kmalloc_array(vq->max_descs, > + sizeof(*vq->descs), > + GFP_KERNEL); Is iov_limit too much here? It can obviously increase the footprint. I guess the batching can only be done for descriptor without indirect or next set. Then we may batch 16 or 6...
2019 Oct 12
2
[PATCH RFC v1 1/2] vhost: option to fetch descriptors through an independent struct
...0; > kfree(vq->indirect); > vq->indirect = NULL; > kfree(vq->log); > @@ -385,6 +389,10 @@ static long vhost_dev_alloc_iovecs(struct vhost_dev *dev) > > for (i = 0; i < dev->nvqs; ++i) { > vq = dev->vqs[i]; > + vq->max_descs = dev->iov_limit; > + vq->descs = kmalloc_array(vq->max_descs, > + sizeof(*vq->descs), > + GFP_KERNEL); Is iov_limit too much here? It can obviously increase the footprint. I guess the batching can only be done for descriptor without indirect or next set. Then we may batch 16 or 6...
2020 Jun 23
0
[PATCH RFC v8 02/11] vhost: use batched get_vq_desc version
...q->descs); > > >>> @@ -394,6 +400,9 @@ static long vhost_dev_alloc_iovecs(struct vhost_dev *dev) > > >>> for (i = 0; i < dev->nvqs; ++i) { > > >>> vq = dev->vqs[i]; > > >>> vq->max_descs = dev->iov_limit; > > >>> + if (vhost_vq_num_batch_descs(vq) < 0) { > > >>> + return -EINVAL; > > >>> + } > > >> This check breaks vdpa which set iov_limit to zero. Consider iov_limit is > > >> meaningless...
2019 Oct 15
0
[PATCH RFC v1 1/2] vhost: option to fetch descriptors through an independent struct
...t; > > > kfree(vq->log); > > > > @@ -385,6 +389,10 @@ static long vhost_dev_alloc_iovecs(struct vhost_dev *dev) > > > > for (i = 0; i < dev->nvqs; ++i) { > > > > vq = dev->vqs[i]; > > > > + vq->max_descs = dev->iov_limit; > > > > + vq->descs = kmalloc_array(vq->max_descs, > > > > + sizeof(*vq->descs), > > > > + GFP_KERNEL); > > > > > > Is iov_limit too much here? It can obviously increase the footprint. I guess > > > the batching...
2020 May 29
0
[PATCH 1/6] vhost: allow device that does not depend on vhost worker
...ll); + if (!poll->dev->use_worker) + work->fn(work); + else + vhost_poll_queue(poll); + return 0; } @@ -454,6 +459,7 @@ static size_t vhost_get_desc_size(struct vhost_virtqueue *vq, void vhost_dev_init(struct vhost_dev *dev, struct vhost_virtqueue **vqs, int nvqs, int iov_limit, int weight, int byte_weight, + bool use_worker, int (*msg_handler)(struct vhost_dev *dev, struct vhost_iotlb_msg *msg)) { @@ -471,6 +477,7 @@ void vhost_dev_init(struct vhost_dev *dev, dev->iov_limit = iov_limit; dev->weight = weight; dev->byte_weight = byte...
2019 Jul 23
0
[PATCH 2/6] vhost: validate MMU notifier registration
...host/vhost.h | 1 + 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/drivers/vhost/vhost.c b/drivers/vhost/vhost.c index 34c0d970bcbc..058191d5efad 100644 --- a/drivers/vhost/vhost.c +++ b/drivers/vhost/vhost.c @@ -630,6 +630,7 @@ void vhost_dev_init(struct vhost_dev *dev, dev->iov_limit = iov_limit; dev->weight = weight; dev->byte_weight = byte_weight; + dev->has_notifier = false; init_llist_head(&dev->work_list); init_waitqueue_head(&dev->wait); INIT_LIST_HEAD(&dev->read_list); @@ -731,6 +732,7 @@ long vhost_dev_set_owner(struct vhost_dev *...
2020 Jun 22
0
[PATCH RFC v8 02/11] vhost: use batched get_vq_desc version
...iovecs(struct vhost_virtqueue *vq) > > { > > kfree(vq->descs); > > @@ -394,6 +400,9 @@ static long vhost_dev_alloc_iovecs(struct vhost_dev *dev) > > for (i = 0; i < dev->nvqs; ++i) { > > vq = dev->vqs[i]; > > vq->max_descs = dev->iov_limit; > > + if (vhost_vq_num_batch_descs(vq) < 0) { > > + return -EINVAL; > > + } > > > This check breaks vdpa which set iov_limit to zero. Consider iov_limit is > meaningless to vDPA, I wonder we can skip the test when device doesn't use > worker. > &gt...
2020 Jun 23
0
[PATCH RFC v8 02/11] vhost: use batched get_vq_desc version
...ree(vq->descs); >>>>> @@ -394,6 +400,9 @@ static long vhost_dev_alloc_iovecs(struct vhost_dev *dev) >>>>> for (i = 0; i < dev->nvqs; ++i) { >>>>> vq = dev->vqs[i]; >>>>> vq->max_descs = dev->iov_limit; >>>>> + if (vhost_vq_num_batch_descs(vq) < 0) { >>>>> + return -EINVAL; >>>>> + } >>>> This check breaks vdpa which set iov_limit to zero. Consider iov_limit is >>>> meaningless to vDPA, I...
2019 May 16
6
[PATCH net 0/4] Prevent vhost kthread from hogging CPU
Hi: This series try to prvernt a guest triggerable CPU hogging through vhost kthread. This is done by introducing and checking the weight after each requrest. The patch has been tested with reproducer of vsock and virtio-net. Only compile test is done for vhost-scsi. Please review. This addresses CVE-2019-3900. Jason Wang (4): vhost: introduce vhost_exceeds_weight() vhost_net: fix possible
2019 Oct 12
0
[PATCH RFC v1 1/2] vhost: option to fetch descriptors through an independent struct
...gt;indirect); > > vq->indirect = NULL; > > kfree(vq->log); > > @@ -385,6 +389,10 @@ static long vhost_dev_alloc_iovecs(struct vhost_dev *dev) > > for (i = 0; i < dev->nvqs; ++i) { > > vq = dev->vqs[i]; > > + vq->max_descs = dev->iov_limit; > > + vq->descs = kmalloc_array(vq->max_descs, > > + sizeof(*vq->descs), > > + GFP_KERNEL); > > > Is iov_limit too much here? It can obviously increase the footprint. I guess > the batching can only be done for descriptor without indirect or ne...
2023 May 31
1
[syzbot] [kvm?] [net?] [virt?] general protection fault in vhost_work_queue
...ty(&dev->worker.work_list); } EXPORT_SYMBOL_GPL(vhost_has_work); @@ -468,7 +470,7 @@ void vhost_dev_init(struct vhost_dev *dev, dev->umem = NULL; dev->iotlb = NULL; dev->mm = NULL; - dev->worker = NULL; + memset(&dev->worker, 0, sizeof(dev->worker)); dev->iov_limit = iov_limit; dev->weight = weight; dev->byte_weight = byte_weight; @@ -542,46 +544,38 @@ static void vhost_detach_mm(struct vhost_dev *dev) static void vhost_worker_free(struct vhost_dev *dev) { - struct vhost_worker *worker = dev->worker; + struct vhost_task *vtsk = READ_ONCE(dev-...
2019 May 17
9
[PATCH V2 0/4] Prevent vhost kthread from hogging CPU
Hi: This series try to prevent a guest triggerable CPU hogging through vhost kthread. This is done by introducing and checking the weight after each requrest. The patch has been tested with reproducer of vsock and virtio-net. Only compile test is done for vhost-scsi. Please review. This addresses CVE-2019-3900. Changs from V1: - fix user-ater-free in vosck patch Jason Wang (4): vhost: