VirtualBox

Changeset 9945 in vbox for trunk/src/VBox/VMM/VMMAll


Ignore:
Timestamp:
Jun 26, 2008 9:58:34 AM (16 years ago)
Author:
vboxsync
Message:

Corrections

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMAll/PGMAllPool.cpp

    r9944 r9945  
    420420                    LogFlow(("pgmPoolMonitorChainChanging: Detected conflict at iShw=%#x!\n", iShw));
    421421                }
    422 
    423                 if (uShw.pPDPae->a[iShw].n.u1Present)
     422                else
    424423                {
    425                     LogFlow(("pgmPoolMonitorChainChanging: pae pd iShw=%#x: %RX64 -> freeing it!\n", iShw, uShw.pPDPae->a[iShw].u));
    426                     pgmPoolFree(pPool->CTXSUFF(pVM),
    427                                 uShw.pPDPae->a[iShw].u & X86_PDE_PAE_PG_MASK,
    428                                 /* Note: hardcoded PAE implementation dependency */
    429                                 (pPage->enmKind == PGMPOOLKIND_PAE_PD_FOR_PAE_PD) ? PGMPOOL_IDX_PAE_PD : pPage->idx,
    430                                 (pPage->enmKind == PGMPOOLKIND_PAE_PD_FOR_PAE_PD) ? iShw + (pPage->idx - PGMPOOL_IDX_PAE_PD_0) * X86_PG_PAE_ENTRIES : iShw);
    431                     uShw.pPDPae->a[iShw].u = 0;
     424                    if (uShw.pPDPae->a[iShw].n.u1Present)
     425                    {
     426                        LogFlow(("pgmPoolMonitorChainChanging: pae pd iShw=%#x: %RX64 -> freeing it!\n", iShw, uShw.pPDPae->a[iShw].u));
     427                        pgmPoolFree(pPool->CTXSUFF(pVM),
     428                                    uShw.pPDPae->a[iShw].u & X86_PDE_PAE_PG_MASK,
     429                                    /* Note: hardcoded PAE implementation dependency */
     430                                    (pPage->enmKind == PGMPOOLKIND_PAE_PD_FOR_PAE_PD) ? PGMPOOL_IDX_PAE_PD : pPage->idx,
     431                                    (pPage->enmKind == PGMPOOLKIND_PAE_PD_FOR_PAE_PD) ? iShw + (pPage->idx - PGMPOOL_IDX_PAE_PD_0) * X86_PG_PAE_ENTRIES : iShw);
     432                        uShw.pPDPae->a[iShw].u = 0;
     433                    }
    432434                }
    433435
     
    438440                {
    439441                    const unsigned iShw2 = (off + pgmPoolDisasWriteSize(pCpu) - 1) / sizeof(X86PDEPAE);
     442                    AssertReturnVoid(iShw2 < ELEMENTS(uShw.pPDPae->a));
     443
    440444                    if (    iShw2 != iShw
    441                         &&  iShw2 < ELEMENTS(uShw.pPDPae->a)
    442445                        &&  uShw.pPDPae->a[iShw2].u & PGM_PDFLAGS_MAPPING)
    443446                    {
     
    446449                        LogFlow(("pgmPoolMonitorChainChanging: Detected conflict at iShw2=%#x!\n", iShw2));
    447450                    }
     451                    else
    448452                    if (uShw.pPDPae->a[iShw2].n.u1Present)
    449453                    {
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