[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 18/19] hw/i386/amd_iommu: Don't leak memory in amdvi_update_iotlb(
|
From: |
Michael S. Tsirkin |
|
Subject: |
[PULL 18/19] hw/i386/amd_iommu: Don't leak memory in amdvi_update_iotlb() |
|
Date: |
Thu, 1 Aug 2024 06:37:12 -0400 |
From: Peter Maydell <peter.maydell@linaro.org>
In amdvi_update_iotlb() we will only put a new entry in the hash
table if to_cache.perm is not IOMMU_NONE. However we allocate the
memory for the new AMDVIIOTLBEntry and for the hash table key
regardless. This means that in the IOMMU_NONE case we will leak the
memory we alloacted.
Move the allocations into the if() to the point where we know we're
going to add the item to the hash table.
Cc: qemu-stable@nongnu.org
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2452
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Message-Id: <20240731170019.3590563-1-peter.maydell@linaro.org>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
hw/i386/amd_iommu.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/hw/i386/amd_iommu.c b/hw/i386/amd_iommu.c
index 6d4fde72f9..87643d2891 100644
--- a/hw/i386/amd_iommu.c
+++ b/hw/i386/amd_iommu.c
@@ -357,12 +357,12 @@ static void amdvi_update_iotlb(AMDVIState *s, uint16_t
devid,
uint64_t gpa, IOMMUTLBEntry to_cache,
uint16_t domid)
{
- AMDVIIOTLBEntry *entry = g_new(AMDVIIOTLBEntry, 1);
- uint64_t *key = g_new(uint64_t, 1);
- uint64_t gfn = gpa >> AMDVI_PAGE_SHIFT_4K;
-
/* don't cache erroneous translations */
if (to_cache.perm != IOMMU_NONE) {
+ AMDVIIOTLBEntry *entry = g_new(AMDVIIOTLBEntry, 1);
+ uint64_t *key = g_new(uint64_t, 1);
+ uint64_t gfn = gpa >> AMDVI_PAGE_SHIFT_4K;
+
trace_amdvi_cache_update(domid, PCI_BUS_NUM(devid), PCI_SLOT(devid),
PCI_FUNC(devid), gpa, to_cache.translated_addr);
--
MST
- [PULL 08/19] Revert "hw/pci: Fix SR-IOV VF number calculation", (continued)
- [PULL 08/19] Revert "hw/pci: Fix SR-IOV VF number calculation", Michael S. Tsirkin, 2024/08/01
- [PULL 09/19] Revert "pcie_sriov: Register VFs after migration", Michael S. Tsirkin, 2024/08/01
- [PULL 10/19] Revert "pcie_sriov: Remove num_vfs from PCIESriovPF", Michael S. Tsirkin, 2024/08/01
- [PULL 11/19] Revert "pcie_sriov: Release VFs failed to realize", Michael S. Tsirkin, 2024/08/01
- [PULL 12/19] Revert "pcie_sriov: Reuse SR-IOV VF device instances", Michael S. Tsirkin, 2024/08/01
- [PULL 13/19] Revert "pcie_sriov: Ensure VF function number does not overflow", Michael S. Tsirkin, 2024/08/01
- [PULL 14/19] Revert "pcie_sriov: Do not manually unrealize", Michael S. Tsirkin, 2024/08/01
- [PULL 15/19] Revert "hw/ppc/spapr_pci: Do not reject VFs created after a PF", Michael S. Tsirkin, 2024/08/01
- [PULL 16/19] Revert "hw/ppc/spapr_pci: Do not create DT for disabled PCI device", Michael S. Tsirkin, 2024/08/01
- [PULL 17/19] Revert "hw/pci: Rename has_power to enabled", Michael S. Tsirkin, 2024/08/01
- [PULL 18/19] hw/i386/amd_iommu: Don't leak memory in amdvi_update_iotlb(),
Michael S. Tsirkin <=
- [PULL 19/19] intel_iommu: Fix for IQA reg read dropped DW field, Michael S. Tsirkin, 2024/08/01
- Re: [PULL 00/19] virtio,pci,pc: fixes, Richard Henderson, 2024/08/01