lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [day] [month] [year] [list]
Date:	Tue, 22 Mar 2016 14:51:08 +0800
From:	Liang Chen <liangchen.linux@...il.com>
To:	kvm@...r.kernel.org
Cc:	mst@...hat.com, linux-kernel@...r.kernel.org, pbonzini@...hat.com,
	jay.vosburgh@...onical.com, Liang Chen <liangchen.linux@...il.com>,
	Gavin Guo <gavin.guo@...onical.com>
Subject: [PATCH] virtio-pci: use possible fallback queue size

Virtio 1.0 spec allows driver to modify queue size to reduce momery
requeirments. So the driver should write back the queue size actually
allocated, instead of the original value read from the common config
for the queue.

Signed-off-by: Liang Chen <liangchen.linux@...il.com>
Signed-off-by: Gavin Guo <gavin.guo@...onical.com>
Suggested-by: Jay Vosburgh <jay.vosburgh@...onical.com>
---
 drivers/virtio/virtio_pci_common.h | 2 +-
 drivers/virtio/virtio_pci_modern.c | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/virtio/virtio_pci_common.h b/drivers/virtio/virtio_pci_common.h
index 2cc2522..32ee993 100644
--- a/drivers/virtio/virtio_pci_common.h
+++ b/drivers/virtio/virtio_pci_common.h
@@ -36,7 +36,7 @@ struct virtio_pci_vq_info {
 	struct virtqueue *vq;
 
 	/* the number of entries in the queue */
-	int num;
+	u16 num;
 
 	/* the virtual address of the ring queue */
 	void *queue;
diff --git a/drivers/virtio/virtio_pci_modern.c b/drivers/virtio/virtio_pci_modern.c
index 7760fc1..7f9ccac 100644
--- a/drivers/virtio/virtio_pci_modern.c
+++ b/drivers/virtio/virtio_pci_modern.c
@@ -293,7 +293,7 @@ static size_t vring_pci_size(u16 num)
 	return PAGE_ALIGN(vring_size(num, SMP_CACHE_BYTES));
 }
 
-static void *alloc_virtqueue_pages(int *num)
+static void *alloc_virtqueue_pages(u16 *num)
 {
 	void *pages;
 
@@ -360,7 +360,7 @@ static struct virtqueue *setup_vq(struct virtio_pci_device *vp_dev,
 	}
 
 	/* activate the queue */
-	vp_iowrite16(num, &cfg->queue_size);
+	vp_iowrite16(info->num, &cfg->queue_size);
 	vp_iowrite64_twopart(virt_to_phys(info->queue),
 			     &cfg->queue_desc_lo, &cfg->queue_desc_hi);
 	vp_iowrite64_twopart(virt_to_phys(virtqueue_get_avail(vq)),
-- 
1.9.1

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ