VirtualBox

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


Ignore:
Timestamp:
Dec 13, 2008 9:38:42 AM (16 years ago)
Author:
vboxsync
Message:

EMAll: STOSWD - reject REP operations that crossess pages. The shadow page pool may see memsets in reused pages and we must not let these run wild because it will draing the PGMR0DynMap set.

File:
1 edited

Legend:

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

    r15421 r15426  
    13551355        if (!cTransfers)
    13561356            return VINF_SUCCESS;
     1357
     1358        /* Do *not* try emulate cross page stuff here, this also fends off big copies which
     1359           would kill PGMR0DynMap. */
     1360        if (    cbSize > PAGE_SIZE
     1361            ||  cTransfers > PAGE_SIZE
     1362            ||  (GCDest >> PAGE_SHIFT) != ((GCDest + offIncrement * cTransfers) >> PAGE_SHIFT))
     1363        {
     1364            Log(("STOSWD is crosses pages, chicken out to the recompiler; GCDest=%RGv cbSize=%#x offIncrement=%d cTransfers=%#x\n",
     1365                 GCDest, cbSize, offIncrement, cTransfers));
     1366            return VERR_EM_INTERPRETER;
     1367        }
    13571368
    13581369        LogFlow(("emInterpretStosWD dest=%04X:%RGv (%RGv) cbSize=%d cTransfers=%x DF=%d\n", pRegFrame->es, GCOffset, GCDest, cbSize, cTransfers, pRegFrame->eflags.Bits.u1DF));
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