VirtualBox

忽略:
時間撮記:
2022-2-24 下午09:15:14 (3 年 以前)
作者:
vboxsync
svn:sync-xref-src-repo-rev:
150173
訊息:

Devices: Must not use PAGE_SIZE, PAGE_SHIFT, PAGE_OFFSET_MASK, PAGE_ADDRESS or PHYS_PAGE_ADDRESS here either. bugref:9898

檔案:
修改 1 筆資料

圖例:

未更動
新增
刪除
  • trunk/src/VBox/Devices/VMMDev/VMMDevHGCM.cpp

    r93931 r93944  
    681681    if (pPtr->cPages == 1)
    682682        return true;
    683     RTGCPHYS64 Phys = pPtr->paPages[0] + PAGE_SIZE;
     683    RTGCPHYS64 Phys = pPtr->paPages[0] + GUEST_PAGE_SIZE;
    684684    if (Phys != pPtr->paPages[1])
    685685        return false;
     
    689689        do
    690690        {
    691             Phys += PAGE_SIZE;
     691            Phys += GUEST_PAGE_SIZE;
    692692            if (Phys != pPtr->paPages[iPage])
    693693                return false;
     
    724724    for (uint32_t iPage = 0; iPage < pPtr->cPages && cbRemaining > 0; ++iPage)
    725725    {
    726         uint32_t cbToRead = PAGE_SIZE - offPage;
     726        uint32_t cbToRead = GUEST_PAGE_SIZE - offPage;
    727727        if (cbToRead > cbRemaining)
    728728            cbToRead = cbRemaining;
     
    763763    for (iPage = 0; iPage < pPtr->cPages && cbRemaining > 0; ++iPage)
    764764    {
    765         uint32_t cbToWrite = PAGE_SIZE - offPage;
     765        uint32_t cbToWrite = GUEST_PAGE_SIZE - offPage;
    766766        if (cbToWrite > cbRemaining)
    767767            cbToWrite = cbRemaining;
     
    10881088                ASSERT_GUEST_RETURN(cbData <= VMMDEV_MAX_HGCM_DATA_SIZE, VERR_INVALID_PARAMETER);
    10891089
    1090                 const uint32_t offFirstPage = cbData > 0 ? GCPtr & PAGE_OFFSET_MASK : 0;
    1091                 const uint32_t cPages       = cbData > 0 ? (offFirstPage + cbData + PAGE_SIZE - 1) / PAGE_SIZE : 0;
     1090                const uint32_t offFirstPage = cbData > 0 ? GCPtr & GUEST_PAGE_OFFSET_MASK : 0;
     1091                const uint32_t cPages       = cbData > 0 ? (offFirstPage + cbData + GUEST_PAGE_SIZE - 1) / GUEST_PAGE_SIZE : 0;
    10921092
    10931093                pGuestParm->u.ptr.cbData        = cbData;
     
    11241124
    11251125                        pGuestParm->u.ptr.paPages[iPage] = GCPhys;
    1126                         GCPtr += PAGE_SIZE;
     1126                        GCPtr += GUEST_PAGE_SIZE;
    11271127                    }
    11281128                }
     
    11691169                                        ("%#x\n", pPageListInfo->flags), VERR_INVALID_FLAGS);
    11701170                /* First page offset. */
    1171                 ASSERT_GUEST_MSG_RETURN(pPageListInfo->offFirstPage < PAGE_SIZE,
     1171                ASSERT_GUEST_MSG_RETURN(pPageListInfo->offFirstPage < GUEST_PAGE_SIZE,
    11721172                                        ("%#x\n", pPageListInfo->offFirstPage), VERR_INVALID_PARAMETER);
    11731173
     
    11771177                ASSERT_GUEST_MSG_RETURN(      pPageListInfo->cPages
    11781178                                           == (pGuestParm->enmType == VMMDevHGCMParmType_ContiguousPageList ? 1
    1179                                                : RT_ALIGN_32(pPageListInfo->offFirstPage + cbData, PAGE_SIZE) >> PAGE_SHIFT)
     1179                                               :    RT_ALIGN_32(pPageListInfo->offFirstPage + cbData, GUEST_PAGE_SIZE)
     1180                                                 >> GUEST_PAGE_SHIFT)
    11801181                                        || pGuestParm->enmType == VMMDevHGCMParmType_PageList,
    11811182                                        ("offFirstPage=%#x cbData=%#x cPages=%#x enmType=%d\n",
     
    11921193                {
    11931194                    /* Validate page offsets */
    1194                     ASSERT_GUEST_MSG_RETURN(   !(pPageListInfo->aPages[0] & PAGE_OFFSET_MASK)
    1195                                             || (pPageListInfo->aPages[0] & PAGE_OFFSET_MASK) == pPageListInfo->offFirstPage,
     1195                    ASSERT_GUEST_MSG_RETURN(   !(pPageListInfo->aPages[0] & GUEST_PAGE_OFFSET_MASK)
     1196                                            || (pPageListInfo->aPages[0] & GUEST_PAGE_OFFSET_MASK) == pPageListInfo->offFirstPage,
    11961197                                            ("%#RX64 offFirstPage=%#x\n", pPageListInfo->aPages[0], pPageListInfo->offFirstPage),
    11971198                                            VERR_INVALID_POINTER);
    11981199                    uint32_t const cPages = pPageListInfo->cPages;
    11991200                    for (uint32_t iPage = 1; iPage < cPages; iPage++)
    1200                         ASSERT_GUEST_MSG_RETURN(!(pPageListInfo->aPages[iPage] & PAGE_OFFSET_MASK),
     1201                        ASSERT_GUEST_MSG_RETURN(!(pPageListInfo->aPages[iPage] & GUEST_PAGE_OFFSET_MASK),
    12011202                                                ("[%#zx]=%#RX64\n", iPage, pPageListInfo->aPages[iPage]), VERR_INVALID_POINTER);
    12021203                    RT_UNTRUSTED_VALIDATED_FENCE();
注意: 瀏覽 TracChangeset 來幫助您使用更動檢視器

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