eb86ba78e5
- Fix stable issues found in upstream: hmp-Fix-loadvm-to-resume-the-VM-on-succe.patch hw-block-nvme-align-with-existing-style.patch hw-nvme-fix-missing-check-for-PMR-capabi.patch hw-nvme-fix-pin-based-interrupt-behavior.patch linux-user-aarch64-Enable-hwcap-for-RND-.patch qemu-config-load-modules-when-instantiat.patch qemu-config-parse-configuration-files-to.patch qemu-config-use-qemu_opts_from_qdict.patch runstate-Initialize-Error-to-NULL.patch target-i386-Exit-tb-after-wrmsr.patch tcg-Allocate-sufficient-storage-in-temp_.patch tcg-sparc-Fix-temp_allocate_frame-vs-spa.patch vhost-vdpa-don-t-initialize-backend_feat.patch vl-allow-not-specifying-size-in-m-when-u.patch vl-Fix-an-assert-failure-in-error-path.patch vl-plug-object-back-into-readconfig.patch vl-plumb-keyval-based-options-into-readc.patch x86-acpi-use-offset-instead-of-pointer-w.patch - Update qemu-supportconfig plugin - Fix an update-alternative warning when removing qemu-skiboot package bsc#1178678 OBS-URL: https://build.opensuse.org/request/show/903710 OBS-URL: https://build.opensuse.org/package/show/Virtualization/qemu?expand=0&rev=660
36 lines
1.3 KiB
Diff
36 lines
1.3 KiB
Diff
From: Klaus Jensen <k.jensen@samsung.com>
|
|
Date: Mon, 7 Jun 2021 11:47:57 +0200
|
|
Subject: hw/nvme: fix missing check for PMR capability
|
|
|
|
Git-commit: 2b02aabc9d02f9e95946cf639f546bb61f1721b7
|
|
|
|
Qiang Liu reported that an access on an unknown address is triggered in
|
|
memory_region_set_enabled because a check on CAP.PMRS is missing for the
|
|
PMRCTL register write when no PMR is configured.
|
|
|
|
Cc: qemu-stable@nongnu.org
|
|
Fixes: 75c3c9de961d ("hw/block/nvme: disable PMR at boot up")
|
|
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/362
|
|
Signed-off-by: Klaus Jensen <k.jensen@samsung.com>
|
|
Reviewed-by: Keith Busch <kbusch@kernel.org>
|
|
Signed-off-by: Jose R. Ziviani <jziviani@suse.de>
|
|
---
|
|
hw/block/nvme.c | 4 ++++
|
|
1 file changed, 4 insertions(+)
|
|
|
|
diff --git a/hw/block/nvme.c b/hw/block/nvme.c
|
|
index 58185c8a17bfa3b84643733bc558..73f4516174776782f237193e29fc 100644
|
|
--- a/hw/block/nvme.c
|
|
+++ b/hw/block/nvme.c
|
|
@@ -5600,6 +5600,10 @@ static void nvme_write_bar(NvmeCtrl *n, hwaddr offset, uint64_t data,
|
|
"invalid write to PMRCAP register, ignored");
|
|
return;
|
|
case 0xe04: /* PMRCTL */
|
|
+ if (!NVME_CAP_PMRS(n->bar.cap)) {
|
|
+ return;
|
|
+ }
|
|
+
|
|
n->bar.pmrctl = data;
|
|
if (NVME_PMRCTL_EN(data)) {
|
|
memory_region_set_enabled(&n->pmr.dev->mr, true);
|