[PATCH qxl-wddm-dod v5 1/7] Use MmMapIoSpaceEx instead of MmMapIoSpace

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxxx>

Signed-off-by: Sameeh Jubran <sameeh@xxxxxxxxxx>
---
 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

_______________________________________________
Spice-devel mailing list
Spice-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/spice-devel




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]     [Monitors]