[Spice-devel] [PATCH qxl-wddm-dod v5 1/7] Use MmMapIoSpaceEx instead of MmMapIoSpace
Sameeh Jubran
sameeh at daynix.com
Mon Sep 26 13:00:05 UTC 2016
Disable execution bit on mapping improving security.
MmMapIoSpaceEx is available only in Windows 10 thus
the macros are used.
Based on a patch by Sandy Stutsman <sstutsma at redhat.com>
Signed-off-by: Sameeh Jubran <sameeh at daynix.com>
---
qxldod/QxlDod.cpp | 13 ++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)
diff --git a/qxldod/QxlDod.cpp b/qxldod/QxlDod.cpp
index accf895..798b2f0 100755
--- a/qxldod/QxlDod.cpp
+++ b/qxldod/QxlDod.cpp
@@ -2009,17 +2009,28 @@ MapFrameBuffer(
return STATUS_INVALID_PARAMETER;
}
+#if NTDDI_VERSION >= NTDDI_WIN10
+ *VirtualAddress = MmMapIoSpaceEx(PhysicalAddress,
+ Length,
+ PAGE_WRITECOMBINE | PAGE_READWRITE);
+#else
*VirtualAddress = MmMapIoSpace(PhysicalAddress,
Length,
MmWriteCombined);
+#endif
if (*VirtualAddress == NULL)
{
// The underlying call to MmMapIoSpace failed. This may be because, MmWriteCombined
// isn't supported, so try again with MmNonCached
-
+#if NTDDI_VERSION >= NTDDI_WIN10
+ *VirtualAddress = MmMapIoSpaceEx(PhysicalAddress,
+ Length,
+ (PAGE_NOCACHE | PAGE_READWRITE));
+#else
*VirtualAddress = MmMapIoSpace(PhysicalAddress,
Length,
MmNonCached);
+#endif
if (*VirtualAddress == NULL)
{
DbgPrint(TRACE_LEVEL_ERROR, ("MmMapIoSpace returned a NULL buffer when trying to allocate %lu bytes", Length));
--
2.7.4
More information about the Spice-devel
mailing list