From: Max Reitz <mreitz@redhat.com>
To: qemu-block@nongnu.org
Cc: qemu-devel@nongnu.org, Max Reitz <mreitz@redhat.com>,
Peter Maydell <peter.maydell@linaro.org>,
Kevin Wolf <kwolf@redhat.com>
Subject: [Qemu-devel] [PULL 09/13] nvme: ensure the num_queues is not zero
Date: Thu, 31 Jan 2019 01:59:41 +0100 [thread overview]
Message-ID: <20190131005945.20149-10-mreitz@redhat.com> (raw)
In-Reply-To: <20190131005945.20149-1-mreitz@redhat.com>
From: Li Qiang <liq3ea@163.com>
When it is zero, it causes segv.
Using following command:
"-drive file=//home/test/test1.img,if=none,id=id0
-device nvme,drive=id0,serial=test,num_queues=0"
causes following Backtrack:
Thread 4 "qemu-system-x86" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fffe9735700 (LWP 30952)]
0x0000555555a7a77c in nvme_start_ctrl (n=0x5555577473f0) at hw/block/nvme.c:825
825 if (unlikely(n->cq[0])) {
(gdb) bt
0 0x0000555555a7a77c in nvme_start_ctrl (n=0x5555577473f0)
at hw/block/nvme.c:825
1 0x0000555555a7af7f in nvme_write_bar (n=0x5555577473f0, offset=20,
data=4587521, size=4) at hw/block/nvme.c:969
2 0x0000555555a7b81a in nvme_mmio_write (opaque=0x5555577473f0, addr=20,
data=4587521, size=4) at hw/block/nvme.c:1163
3 0x0000555555869236 in memory_region_write_accessor (mr=0x555557747cd0,
addr=20, value=0x7fffe97320f8, size=4, shift=0, mask=4294967295, attrs=...)
at /home/test/qemu1/qemu/memory.c:502
4 0x0000555555869446 in access_with_adjusted_size (addr=20,
value=0x7fffe97320f8, size=4, access_size_min=2, access_size_max=8,
access_fn=0x55555586914d <memory_region_write_accessor>,
mr=0x555557747cd0, attrs=...) at /home/test/qemu1/qemu/memory.c:568
5 0x000055555586c479 in memory_region_dispatch_write (mr=0x555557747cd0,
addr=20, data=4587521, size=4, attrs=...)
at /home/test/qemu1/qemu/memory.c:1499
6 0x00005555558030af in flatview_write_continue (fv=0x7fffe0061130,
addr=4273930260, attrs=..., buf=0x7ffff7ff0028 "\001", len=4, addr1=20,
l=4, mr=0x555557747cd0) at /home/test/qemu1/qemu/exec.c:3234
7 0x00005555558031f9 in flatview_write (fv=0x7fffe0061130, addr=4273930260,
attrs=..., buf=0x7ffff7ff0028 "\001", len=4)
at /home/test/qemu1/qemu/exec.c:3273
8 0x00005555558034ff in address_space_write (
---Type <return> to continue, or q <return> to quit---
as=0x555556758480 <address_space_memory>, addr=4273930260, attrs=...,
buf=0x7ffff7ff0028 "\001", len=4) at /home/test/qemu1/qemu/exec.c:3363
9 0x0000555555803550 in address_space_rw (
as=0x555556758480 <address_space_memory>, addr=4273930260, attrs=...,
buf=0x7ffff7ff0028 "\001", len=4, is_write=true)
at /home/test/qemu1/qemu/exec.c:3374
10 0x00005555558884a1 in kvm_cpu_exec (cpu=0x555556920e40)
at /home/test/qemu1/qemu/accel/kvm/kvm-all.c:2031
11 0x000055555584cd9d in qemu_kvm_cpu_thread_fn (arg=0x555556920e40)
at /home/test/qemu1/qemu/cpus.c:1281
12 0x0000555555dbaf6d in qemu_thread_start (args=0x5555569438a0)
at util/qemu-thread-posix.c:502
13 0x00007ffff5dc86db in start_thread (arg=0x7fffe9735700)
at pthread_create.c:463
14 0x00007ffff5af188f in clone ()
at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
Signed-off-by: Li Qiang <liq3ea@163.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Message-id: 20190120055558.32984-3-liq3ea@163.com
Signed-off-by: Max Reitz <mreitz@redhat.com>
---
hw/block/nvme.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/hw/block/nvme.c b/hw/block/nvme.c
index f206391e8e..0b77b49b36 100644
--- a/hw/block/nvme.c
+++ b/hw/block/nvme.c
@@ -1208,6 +1208,11 @@ static void nvme_realize(PCIDevice *pci_dev, Error **errp)
int64_t bs_size;
uint8_t *pci_conf;
+ if (!n->num_queues) {
+ error_setg(errp, "num_queues can't be zero");
+ return;
+ }
+
if (!n->conf.blk) {
error_setg(errp, "drive property not set");
return;
--
2.20.1
next prev parent reply other threads:[~2019-01-31 1:00 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-01-31 0:59 [Qemu-devel] [PULL 00/13] Block patches Max Reitz
2019-01-31 0:59 ` [Qemu-devel] [PULL 01/13] qapi: add x-debug-query-block-graph Max Reitz
2019-01-31 0:59 ` [Qemu-devel] [PULL 02/13] scripts: add render_block_graph function for QEMUMachine Max Reitz
2019-01-31 0:59 ` [Qemu-devel] [PULL 03/13] block/ssh: Convert from DPRINTF() macro to trace events Max Reitz
2019-01-31 0:59 ` [Qemu-devel] [PULL 04/13] block/curl: " Max Reitz
2019-01-31 0:59 ` [Qemu-devel] [PULL 05/13] block/file-posix: " Max Reitz
2019-01-31 0:59 ` [Qemu-devel] [PULL 06/13] block/sheepdog: " Max Reitz
2019-01-31 0:59 ` [Qemu-devel] [PULL 07/13] qemu-io: Add generic function for reinitializing optind Max Reitz
2019-01-31 0:59 ` [Qemu-devel] [PULL 08/13] nvme: use TYPE_NVME instead of constant string Max Reitz
2019-01-31 0:59 ` Max Reitz [this message]
2019-01-31 0:59 ` [Qemu-devel] [PULL 10/13] nvme: use pci_dev directly in nvme_realize Max Reitz
2019-01-31 0:59 ` [Qemu-devel] [PULL 11/13] iotests.py: Add qemu_nbd_pipe() Max Reitz
2019-01-31 0:59 ` [Qemu-devel] [PULL 12/13] iotests: Bind qemu-nbd to localhost in 147 Max Reitz
2019-01-31 0:59 ` [Qemu-devel] [PULL 13/13] iotests: Allow 147 to be run concurrently Max Reitz
2019-02-01 10:28 ` [Qemu-devel] [PULL 00/13] Block patches Peter Maydell
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=20190131005945.20149-10-mreitz@redhat.com \
--to=mreitz@redhat.com \
--cc=kwolf@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
/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).