Index: /trunk/src/VBox/Additions/common/VBoxGuestLib/HGCMInternal.cpp
===================================================================
--- /trunk/src/VBox/Additions/common/VBoxGuestLib/HGCMInternal.cpp	(revision 40358)
+++ /trunk/src/VBox/Additions/common/VBoxGuestLib/HGCMInternal.cpp	(revision 40359)
@@ -260,5 +260,7 @@
                 if (fIsUser)
                     return VERR_INVALID_PARAMETER;
-                if (!VBGLR0_CAN_USE_PHYS_PAGE_LIST())
+                /* always perform it as !VBGLR0_CAN_USE_PHYS_PAGE_LIST() since otherwise
+                 * we end up creating a RTR0MEMOBJ and doing page lock again, which leads to undefined behavior and possible BSOD on Win */
+                //if (!VBGLR0_CAN_USE_PHYS_PAGE_LIST())
                 {
                     cb = pSrcParm->u.Pointer.size;
@@ -537,5 +539,7 @@
             case VMMDevHGCMParmType_LinAddr_Locked_Out:
             case VMMDevHGCMParmType_LinAddr_Locked:
-                if (!VBGLR0_CAN_USE_PHYS_PAGE_LIST())
+                /* always perform it as !VBGLR0_CAN_USE_PHYS_PAGE_LIST() since otherwise
+                 * we end up creating a RTR0MEMOBJ and doing page lock again, which leads to undefined behavior and possible BSOD on Win */
+//                if (!VBGLR0_CAN_USE_PHYS_PAGE_LIST())
                 {
                     *pDstParm = *pSrcParm;
@@ -801,5 +805,7 @@
             case VMMDevHGCMParmType_LinAddr_Locked_Out:
             case VMMDevHGCMParmType_LinAddr_Locked:
-                if (!VBGLR0_CAN_USE_PHYS_PAGE_LIST())
+                /* always perform it as !VBGLR0_CAN_USE_PHYS_PAGE_LIST() since otherwise
+                 * we end up creating a RTR0MEMOBJ and doing page lock again, which leads to undefined behavior and possible BSOD on Win */
+//                if (!VBGLR0_CAN_USE_PHYS_PAGE_LIST())
                 {
                     pDstParm->u.Pointer.size = pSrcParm->u.Pointer.size;
