[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 1/6] hw/nvme: separate 'serial' property for VFs
From: |
Klaus Jensen |
Subject: |
[PULL 1/6] hw/nvme: separate 'serial' property for VFs |
Date: |
Mon, 11 Mar 2024 20:11:07 +0100 |
From: Minwoo Im <minwoo.im@samsung.com>
Currently, when a VF is created, it uses the 'params' object of the PF
as it is. In other words, the 'params.serial' string memory area is also
shared. In this situation, if the VF is removed from the system, the
PF's 'params.serial' object is released with object_finalize() followed
by object_property_del_all() which release the memory for 'serial'
property. If that happens, the next VF created will inherit a serial
from a corrupted memory area.
If this happens, an error will occur when comparing subsys->serial and
n->params.serial in the nvme_subsys_register_ctrl() function.
Cc: qemu-stable@nongnu.org
Fixes: 44c2c09488db ("hw/nvme: Add support for SR-IOV")
Signed-off-by: Minwoo Im <minwoo.im@samsung.com>
Reviewed-by: Klaus Jensen <k.jensen@samsung.com>
Signed-off-by: Klaus Jensen <k.jensen@samsung.com>
---
hw/nvme/ctrl.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c
index 76fe0397045b..94ef63945725 100644
--- a/hw/nvme/ctrl.c
+++ b/hw/nvme/ctrl.c
@@ -8309,9 +8309,15 @@ static void nvme_realize(PCIDevice *pci_dev, Error
**errp)
if (pci_is_vf(pci_dev)) {
/*
* VFs derive settings from the parent. PF's lifespan exceeds
- * that of VF's, so it's safe to share params.serial.
+ * that of VF's.
*/
memcpy(&n->params, &pn->params, sizeof(NvmeParams));
+
+ /*
+ * Set PF's serial value to a new string memory to prevent 'serial'
+ * property object release of PF when a VF is removed from the system.
+ */
+ n->params.serial = g_strdup(pn->params.serial);
n->subsys = pn->subsys;
}
--
2.44.0
- [PULL 0/6] hw/nvme updates, Klaus Jensen, 2024/03/11
- [PULL 1/6] hw/nvme: separate 'serial' property for VFs,
Klaus Jensen <=
- [PULL 2/6] hw/nvme: fix invalid check on mcl, Klaus Jensen, 2024/03/11
- [PULL 3/6] MAINTAINERS: add Jesper as reviewer on hw/nvme, Klaus Jensen, 2024/03/11
- [PULL 4/6] hw/nvme: Add NVMe NGUID property, Klaus Jensen, 2024/03/11
- [PULL 6/6] hw/nvme: add machine compatibility parameter to enable msix exclusive bar, Klaus Jensen, 2024/03/11
- [PULL 5/6] hw/nvme: generalize the mbar size helper, Klaus Jensen, 2024/03/11
- Re: [PULL 0/6] hw/nvme updates, Peter Maydell, 2024/03/12