VirtualBox

Changeset 65452 in vbox


Ignore:
Timestamp:
Jan 26, 2017 12:45:16 PM (8 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
113067
Message:

PGMAllBth.h: InvalidatePage: Skip if pgmShwGet32BitPDEPtr or pgmShwGetPaePDPTPtr returns NULL. bugref:8509

Looks like it's possible for REM to executing without triggering the MapCR3 code.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMAll/PGMAllBth.h

    r65398 r65452  
    12331233    /* Fetch the pgm pool shadow descriptor. */
    12341234    PPGMPOOLPAGE    pShwPde = pVCpu->pgm.s.CTX_SUFF(pShwPageCR3);
     1235#  ifdef IN_RING3 /* Possible we didn't resync yet when called from REM. */
     1236    if (!pShwPde)
     1237    {
     1238        STAM_COUNTER_INC(&pVCpu->pgm.s.CTX_SUFF(pStats)->CTX_MID_Z(Stat,InvalidatePageSkipped));
     1239        return VINF_SUCCESS;
     1240    }
     1241#  else
    12351242    Assert(pShwPde);
     1243#  endif
    12361244
    12371245# elif PGM_SHW_TYPE == PGM_TYPE_PAE
     
    12401248
    12411249    /* If the shadow PDPE isn't present, then skip the invalidate. */
     1250#  ifdef IN_RING3 /* Possible we didn't resync yet when called from REM. */
     1251    if (!pPdptDst || !pPdptDst->a[iPdpt].n.u1Present)
     1252#  else
    12421253    if (!pPdptDst->a[iPdpt].n.u1Present)
    1243     {
    1244         Assert(!(pPdptDst->a[iPdpt].u & PGM_PLXFLAGS_MAPPING));
     1254#  endif
     1255    {
     1256        Assert(!pPdptDst || !(pPdptDst->a[iPdpt].u & PGM_PLXFLAGS_MAPPING));
    12451257        STAM_COUNTER_INC(&pVCpu->pgm.s.CTX_SUFF(pStats)->CTX_MID_Z(Stat,InvalidatePageSkipped));
    12461258        PGM_INVL_PG(pVCpu, GCPtrPage);
Note: See TracChangeset for help on using the changeset viewer.

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