From 9b55ed704196a5747a2beede179d9a6f82ccf20e Mon Sep 17 00:00:00 2001 From: "yuri.benditovich@daynix.com" Date: Thu, 25 May 2017 16:06:37 +0300 Subject: [PATCH] qxl-wddm-dod: Fix unmapping of physical memory https://bugzilla.redhat.com/show_bug.cgi?id=1454866 Due to wrong addresses passed to class driver, it never does unmapping of physical memory, causing a leak of virtual address range. On x86 systems the device fails to start due to failure to map physical memory range after 10-50 cycles of disable-enable. Signed-off-by: Yuri Benditovich Acked-by: Frediano Ziglio --- qxldod/QxlDod.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/qxldod/QxlDod.cpp b/qxldod/QxlDod.cpp index 2d740be..bb71f22 100755 --- a/qxldod/QxlDod.cpp +++ b/qxldod/QxlDod.cpp @@ -3551,24 +3551,24 @@ void QxlDevice::UnmapMemory(void) PDXGKRNL_INTERFACE pDxgkInterface = m_pQxlDod->GetDxgkInterface(); if (m_IoMapped && m_IoBase) { - pDxgkInterface->DxgkCbUnmapMemory( pDxgkInterface->DeviceHandle, &m_IoBase); + pDxgkInterface->DxgkCbUnmapMemory( pDxgkInterface->DeviceHandle, m_IoBase); } m_IoBase = NULL; if (m_RomHdr) { - pDxgkInterface->DxgkCbUnmapMemory( pDxgkInterface->DeviceHandle, &m_RomHdr); + pDxgkInterface->DxgkCbUnmapMemory( pDxgkInterface->DeviceHandle, m_RomHdr); m_RomHdr = NULL; } if (m_RamStart) { - pDxgkInterface->DxgkCbUnmapMemory( pDxgkInterface->DeviceHandle, &m_RamStart); + pDxgkInterface->DxgkCbUnmapMemory( pDxgkInterface->DeviceHandle, m_RamStart); m_RamStart = NULL; } if (m_VRamStart) { - pDxgkInterface->DxgkCbUnmapMemory( pDxgkInterface->DeviceHandle, &m_VRamStart); + pDxgkInterface->DxgkCbUnmapMemory( pDxgkInterface->DeviceHandle, m_VRamStart); m_VRamStart = NULL; } }