VirtualBox

Changeset 19691 in vbox for trunk


Ignore:
Timestamp:
May 14, 2009 12:10:15 PM (16 years ago)
Author:
vboxsync
Message:

SyncPT must be protected by a lock.

File:
1 edited

Legend:

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

    r19329 r19691  
    258258        STAM_PROFILE_START(&pVCpu->pgm.s.StatRZTrap0eTimeSyncPT, f);
    259259        LogFlow(("=>SyncPT %04x = %08x\n", iPDSrc, PdeSrc.au32[0]));
     260        pgmLock(pVM);
    260261        rc = PGM_BTH_NAME(SyncPT)(pVCpu, iPDSrc, pPDSrc, pvFault);
     262        pgmUnlock(pVM);
    261263        if (RT_SUCCESS(rc))
    262264        {
     
    11611163            Assert(pgmMapAreMappingsEnabled(&pVM->pgm.s));
    11621164            Assert(PGMGetGuestMode(pVCpu) <= PGMMODE_PAE);
     1165            pgmLock(pVM);
    11631166            rc = PGM_BTH_NAME(SyncPT)(pVCpu, iPDSrc, pPDSrc, GCPtrPage);
     1167            pgmUnlock(pVM);
    11641168        }
    11651169        else if (   PdeSrc.n.u1User != PdeDst.n.u1User
     
    23722376    LogFlow(("SyncPT: GCPtrPage=%RGv\n", GCPtrPage));
    23732377
     2378    Assert(PGMIsLocked(pVM));
     2379
    23742380#if   (   PGM_GST_TYPE == PGM_TYPE_32BIT  \
    23752381       || PGM_GST_TYPE == PGM_TYPE_PAE    \
     
    30123018        {
    30133019            if (!PdeDst.n.u1Present)
     3020            {
     3021                PVM pVM = pVCpu->CTX_SUFF(pVM);
    30143022                /** r=bird: This guy will set the A bit on the PDE, probably harmless. */
     3023                pgmLock(pVM);
    30153024                rc = PGM_BTH_NAME(SyncPT)(pVCpu, iPDSrc, pPDSrc, GCPtrPage);
     3025                pgmUnlock(pVM);
     3026            }
    30163027            else
    30173028            {
     
    31583169    if (!pPdeDst->n.u1Present)
    31593170    {
     3171        pgmLock(pVM);
    31603172        rc = PGM_BTH_NAME(SyncPT)(pVCpu, iPDSrc, pPDSrc, GCPtrPage);
     3173        pgmUnlock(pVM);
    31613174        AssertRC(rc);
    31623175        if (rc != VINF_SUCCESS)
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