VirtualBox

Changeset 1575 in vbox for trunk


Ignore:
Timestamp:
Mar 20, 2007 10:23:17 AM (18 years ago)
Author:
vboxsync
Message:

Check for hypervisor area & intermediate mapping conflicts too.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/PGMMap.cpp

    r1573 r1575  
    465465PGMR3DECL(int) PGMR3MapIntermediate(PVM pVM, RTUINTPTR Addr, RTHCPHYS HCPhys, unsigned cbPages)
    466466{
     467    size_t  cbHyper;
     468    RTGCPTR pvHyperGC;
     469
    467470    LogFlow(("PGMR3MapIntermediate: Addr=%RTptr HCPhys=%VHp cbPages=%#x\n", Addr, HCPhys, cbPages));
    468471
     
    497500        AssertMsgFailed(("Addr=%RTptr HCPhys=%VHp cbPages=%d\n", Addr, HCPhys, cbPages));
    498501        LogRel(("Addr=%RTptr HCPhys=%VHp cbPages=%d\n", Addr, HCPhys, cbPages));
     502        return VERR_PGM_MAPPINGS_FIX_CONFLICT; /** @todo new error code */
     503    }
     504
     505    /* The intermediate mapping must not conflict with our default hypervisor address. */
     506    pvHyperGC = MMHyperGetArea(pVM, &cbHyper);
     507    if (   uAddress < pvHyperGC
     508           ? uAddress + cbPages > pvHyperGC
     509           : pvHyperGC + cbHyper > uAddress
     510       )
     511    {
     512        AssertMsgFailed(("Addr=%RTptr HyperGC=%VGv cbPages=%d\n", Addr, pvHyperGC, cbPages));
     513        LogRel(("Addr=%RTptr HyperGC=%VGv cbPages=%d\n", Addr, pvHyperGC, cbPages));
    499514        return VERR_PGM_MAPPINGS_FIX_CONFLICT; /** @todo new error code */
    500515    }
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