VirtualBox

Ignore:
Timestamp:
Mar 5, 2012 3:10:10 PM (13 years ago)
Author:
vboxsync
Message:

VBoxGuest: disable page list HGCM transfers for Locked buffers to prevent crashes on Win guests

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Additions/common/VBoxGuestLib/HGCMInternal.cpp

    r39693 r40359  
    260260                if (fIsUser)
    261261                    return VERR_INVALID_PARAMETER;
    262                 if (!VBGLR0_CAN_USE_PHYS_PAGE_LIST())
     262                /* always perform it as !VBGLR0_CAN_USE_PHYS_PAGE_LIST() since otherwise
     263                 * we end up creating a RTR0MEMOBJ and doing page lock again, which leads to undefined behavior and possible BSOD on Win */
     264                //if (!VBGLR0_CAN_USE_PHYS_PAGE_LIST())
    263265                {
    264266                    cb = pSrcParm->u.Pointer.size;
     
    537539            case VMMDevHGCMParmType_LinAddr_Locked_Out:
    538540            case VMMDevHGCMParmType_LinAddr_Locked:
    539                 if (!VBGLR0_CAN_USE_PHYS_PAGE_LIST())
     541                /* always perform it as !VBGLR0_CAN_USE_PHYS_PAGE_LIST() since otherwise
     542                 * we end up creating a RTR0MEMOBJ and doing page lock again, which leads to undefined behavior and possible BSOD on Win */
     543//                if (!VBGLR0_CAN_USE_PHYS_PAGE_LIST())
    540544                {
    541545                    *pDstParm = *pSrcParm;
     
    801805            case VMMDevHGCMParmType_LinAddr_Locked_Out:
    802806            case VMMDevHGCMParmType_LinAddr_Locked:
    803                 if (!VBGLR0_CAN_USE_PHYS_PAGE_LIST())
     807                /* always perform it as !VBGLR0_CAN_USE_PHYS_PAGE_LIST() since otherwise
     808                 * we end up creating a RTR0MEMOBJ and doing page lock again, which leads to undefined behavior and possible BSOD on Win */
     809//                if (!VBGLR0_CAN_USE_PHYS_PAGE_LIST())
    804810                {
    805811                    pDstParm->u.Pointer.size = pSrcParm->u.Pointer.size;
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette