qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "Michael S. Tsirkin" <mst@redhat.com>
To: qemu-devel@nongnu.org
Cc: Peter Maydell <peter.maydell@linaro.org>,
	Prasad J Pandit <pjp@fedoraproject.org>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	qemu-block@nongnu.org
Subject: [Qemu-devel] [PULL 04/25] tests: add test to check VirtQueue object
Date: Thu, 21 Dec 2017 16:28:12 +0200	[thread overview]
Message-ID: <1513866427-27125-5-git-send-email-mst@redhat.com> (raw)
In-Reply-To: <1513866427-27125-1-git-send-email-mst@redhat.com>

From: Prasad J Pandit <pjp@fedoraproject.org>

An uninitialised VirtQueue object or one with Vring.align field
set to zero(0) could lead to arithmetic exceptions. Add a unit
test to validate it.

Signed-off-by: Prasad J Pandit <pjp@fedoraproject.org>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 tests/virtio-blk-test.c | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/tests/virtio-blk-test.c b/tests/virtio-blk-test.c
index e6fb9ba..45f368d 100644
--- a/tests/virtio-blk-test.c
+++ b/tests/virtio-blk-test.c
@@ -674,6 +674,30 @@ static void pci_hotplug(void)
     qtest_shutdown(qs);
 }
 
+/*
+ * Check that setting the vring addr on a non-existent virtqueue does
+ * not crash.
+ */
+static void test_nonexistent_virtqueue(void)
+{
+    QPCIBar bar0;
+    QOSState *qs;
+    QPCIDevice *dev;
+
+    qs = pci_test_start();
+    dev = qpci_device_find(qs->pcibus, QPCI_DEVFN(4, 0));
+    g_assert(dev != NULL);
+
+    qpci_device_enable(dev);
+    bar0 = qpci_iomap(dev, 0, NULL);
+
+    qpci_io_writeb(dev, bar0, VIRTIO_PCI_QUEUE_SEL, 2);
+    qpci_io_writel(dev, bar0, VIRTIO_PCI_QUEUE_PFN, 1);
+
+    g_free(dev);
+    qtest_shutdown(qs);
+}
+
 static void mmio_basic(void)
 {
     QVirtioMMIODevice *dev;
@@ -724,6 +748,7 @@ int main(int argc, char **argv)
         qtest_add_func("/virtio/blk/pci/basic", pci_basic);
         qtest_add_func("/virtio/blk/pci/indirect", pci_indirect);
         qtest_add_func("/virtio/blk/pci/config", pci_config);
+        qtest_add_func("/virtio/blk/pci/nxvirtq", test_nonexistent_virtqueue);
         if (strcmp(arch, "i386") == 0 || strcmp(arch, "x86_64") == 0) {
             qtest_add_func("/virtio/blk/pci/msix", pci_msix);
             qtest_add_func("/virtio/blk/pci/idx", pci_idx);
-- 
MST

  parent reply	other threads:[~2017-12-21 14:28 UTC|newest]

Thread overview: 55+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-12-21 14:27 [Qemu-devel] [PULL 00/25] pc, pci, virtio: features, fixes, cleanups Michael S. Tsirkin
2017-12-21 14:27 ` [Qemu-devel] [PULL 01/25] smbios: support setting OEM strings table Michael S. Tsirkin
2017-12-21 14:28 ` [Qemu-devel] [PULL 02/25] qdev-properties: add UUID property type Michael S. Tsirkin
2017-12-21 14:28 ` [Qemu-devel] [PULL 03/25] vmgenid: use " Michael S. Tsirkin
2017-12-21 14:28 ` Michael S. Tsirkin [this message]
2017-12-21 14:28 ` [Qemu-devel] [PULL 05/25] pci: Rename root bus initialization functions for clarity Michael S. Tsirkin
2017-12-21 14:28 ` [Qemu-devel] [PULL 06/25] pci: Move bridge data structures from pci_bus.h to pci_bridge.h Michael S. Tsirkin
2017-12-21 14:28 ` [Qemu-devel] [PULL 07/25] pci: Add pci_dev_bus_num() helper Michael S. Tsirkin
2017-12-21 14:28 ` [Qemu-devel] [PULL 08/25] pci: Eliminate redundant PCIDevice::bus pointer Michael S. Tsirkin
2017-12-21 14:29 ` [Qemu-devel] [PULL 09/25] pci: Eliminate pci_find_primary_bus() Michael S. Tsirkin
2017-12-21 14:29 ` [Qemu-devel] [PULL 10/25] virtio_error: don't invoke status callbacks Michael S. Tsirkin
2018-02-13 20:53   ` [Qemu-devel] [Qemu-stable] " Peter Lieven
2018-02-13 22:23     ` Michael S. Tsirkin
2018-02-14 21:12       ` Peter Lieven
2017-12-21 14:29 ` [Qemu-devel] [PULL 11/25] tests/pxe-test: Remove unnecessary special case test functions Michael S. Tsirkin
2017-12-21 14:29 ` [Qemu-devel] [PULL 12/25] tests/pxe-test: Use table of testcases rather than open-coding Michael S. Tsirkin
2017-12-21 14:29 ` [Qemu-devel] [PULL 13/25] tests/pxe-test: Test net booting over IPv6 in some cases Michael S. Tsirkin
2017-12-21 14:29 ` [Qemu-devel] [PULL 14/25] tests/pxe-test: Add some extra tests Michael S. Tsirkin
2017-12-21 14:29 ` [Qemu-devel] [PULL 15/25] hw/block/nvme: QOM'ify PCI NVME Michael S. Tsirkin
2017-12-21 20:38   ` Michael S. Tsirkin
2017-12-21 23:02     ` Philippe Mathieu-Daudé
2017-12-21 14:29 ` [Qemu-devel] [PULL 16/25] hw/pci-host/piix: QOM'ify the IGD Passthrough host bridge Michael S. Tsirkin
2017-12-21 14:29 ` [Qemu-devel] [PULL 17/25] hw/pci-host/xilinx: QOM'ify the AXI-PCIe " Michael S. Tsirkin
2017-12-21 14:29 ` [Qemu-devel] [PULL 18/25] hw/pci: remove obsolete PCIDevice->init() Michael S. Tsirkin
2017-12-21 14:29 ` [Qemu-devel] [PULL 19/25] vhost-user: fix indentation in protocol specification Michael S. Tsirkin
2017-12-21 14:29 ` [Qemu-devel] [PULL 20/25] vhost-user: document memory accesses Michael S. Tsirkin
2017-12-21 14:30 ` [Qemu-devel] [PULL 23/25] virtio-pci: Don't force Subsystem Vendor ID = Vendor ID Michael S. Tsirkin
2017-12-21 14:31 ` [Qemu-devel] [PULL 24/25] dump-guest-memory.py: fix "You can't do that without a process to debug" Michael S. Tsirkin
2017-12-21 14:31 ` [Qemu-devel] [PULL 25/25] smbus: do not immediately complete commands Michael S. Tsirkin
2017-12-21 14:33 ` [Qemu-devel] [PULL 21/25] intel_iommu: remove X86_IOMMU_PCI_DEVFN_MAX Michael S. Tsirkin
2017-12-21 14:34 ` [Qemu-devel] [PULL 22/25] intel_iommu: fix error param in string Michael S. Tsirkin
2017-12-21 20:26 ` [Qemu-devel] [PULL 00/25] pc, pci, virtio: features, fixes, cleanups Peter Maydell
2017-12-21 20:37   ` Michael S. Tsirkin
2017-12-21 23:05     ` Peter Maydell
2017-12-21 23:42       ` Michael S. Tsirkin
2017-12-22  0:44         ` Philippe Mathieu-Daudé
2017-12-21 23:05     ` Philippe Mathieu-Daudé
2017-12-21 23:43       ` Michael S. Tsirkin
2018-01-08  9:14         ` Peter Maydell
2018-01-08 17:04           ` Michael S. Tsirkin
2018-01-08 18:10           ` Michael S. Tsirkin
2018-01-09  1:10             ` David Gibson
2018-01-09  4:09               ` Michael S. Tsirkin
2018-01-16  2:48               ` Michael S. Tsirkin
2018-01-16  6:28                 ` Jason Wang
2018-01-16  6:33                   ` Jason Wang
2018-01-16  8:03                   ` Dmitry Fleytman
2018-01-17  3:14                     ` Jason Wang
2018-01-09  4:11           ` Michael S. Tsirkin
2018-01-11 15:31             ` Peter Maydell
2018-01-11 19:59               ` Michael S. Tsirkin
2018-01-11 20:06               ` Michael S. Tsirkin
2018-01-11 21:05               ` Michael S. Tsirkin
2018-01-12 10:44                 ` Peter Maydell
2018-01-12 16:02                   ` Michael S. Tsirkin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1513866427-27125-5-git-send-email-mst@redhat.com \
    --to=mst@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=pjp@fedoraproject.org \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).