VirtualBox

Changeset 23844 in vbox


Ignore:
Timestamp:
Oct 19, 2009 8:21:09 AM (15 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
53604
Message:

Do not call ModifyPage handler with non-page aligned sizes.

Location:
trunk/src/VBox/VMM/VMMAll
Files:
2 edited

Legend:

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

    r22890 r23844  
    6363#elif PGM_GST_TYPE == PGM_TYPE_32BIT || PGM_GST_TYPE == PGM_TYPE_PAE || PGM_GST_TYPE == PGM_TYPE_AMD64
    6464
     65    Assert((GCPtr & PAGE_OFFSET_MASK) == 0);
     66
    6567    PVM pVM = pVCpu->CTX_SUFF(pVM);
    6668    /*
     
    179181 || PGM_GST_TYPE == PGM_TYPE_PAE \
    180182 || PGM_GST_TYPE == PGM_TYPE_AMD64
     183
     184    Assert((cb & PAGE_OFFSET_MASK) == 0);
    181185
    182186    PVM pVM = pVCpu->CTX_SUFF(pVM);
  • trunk/src/VBox/VMM/VMMAll/PGMAllPhys.cpp

    r23488 r23844  
    28892889            if (!(fFlags & X86_PTE_A))
    28902890            {
    2891                 rc = PGM_GST_PFN(ModifyPage,pVCpu)(pVCpu, GCPtrSrc, 1, X86_PTE_A, ~(uint64_t)X86_PTE_A);
     2891                rc = PGMGstModifyPage(pVCpu, GCPtrSrc, 1, X86_PTE_A, ~(uint64_t)X86_PTE_A);
    28922892                AssertRC(rc);
    28932893            }
     
    29422942            if (!(fFlags1 & X86_PTE_A))
    29432943            {
    2944                 rc = PGM_GST_PFN(ModifyPage,pVCpu)(pVCpu, GCPtrSrc, 1, X86_PTE_A, ~(uint64_t)X86_PTE_A);
     2944                rc = PGMGstModifyPage(pVCpu, GCPtrSrc, 1, X86_PTE_A, ~(uint64_t)X86_PTE_A);
    29452945                AssertRC(rc);
    29462946            }
    29472947            if (!(fFlags2 & X86_PTE_A))
    29482948            {
    2949                 rc = PGM_GST_PFN(ModifyPage,pVCpu)(pVCpu, GCPtrSrc + cb1, 1, X86_PTE_A, ~(uint64_t)X86_PTE_A);
     2949                rc = PGMGstModifyPage(pVCpu, GCPtrSrc + cb1, 1, X86_PTE_A, ~(uint64_t)X86_PTE_A);
    29502950                AssertRC(rc);
    29512951            }
     
    30613061                {
    30623062                    /** @todo access bit emulation isn't 100% correct. */
    3063                     rc = PGM_GST_PFN(ModifyPage,pVCpu)(pVCpu, GCPtrSrc, 1, X86_PTE_A, ~(uint64_t)X86_PTE_A);
     3063                    rc = PGMGstModifyPage(pVCpu, GCPtrSrc, 1, X86_PTE_A, ~(uint64_t)X86_PTE_A);
    30643064                    AssertRC(rc);
    30653065                }
     
    31263126                    if (!(fFlags1 & X86_PTE_A))
    31273127                    {
    3128                         rc = PGM_GST_PFN(ModifyPage,pVCpu)(pVCpu, GCPtrSrc, 1, X86_PTE_A, ~(uint64_t)X86_PTE_A);
     3128                        rc = PGMGstModifyPage(pVCpu, GCPtrSrc, 1, X86_PTE_A, ~(uint64_t)X86_PTE_A);
    31293129                        AssertRC(rc);
    31303130                    }
    31313131                    if (!(fFlags2 & X86_PTE_A))
    31323132                    {
    3133                         rc = PGM_GST_PFN(ModifyPage,pVCpu)(pVCpu, GCPtrSrc + cb1, 1, X86_PTE_A, ~(uint64_t)X86_PTE_A);
     3133                        rc = PGMGstModifyPage(pVCpu, GCPtrSrc + cb1, 1, X86_PTE_A, ~(uint64_t)X86_PTE_A);
    31343134                        AssertRC(rc);
    31353135                    }
     
    32543254                {
    32553255                    /** @todo dirty & access bit emulation isn't 100% correct. */
    3256                     rc = PGM_GST_PFN(ModifyPage,pVCpu)(pVCpu, GCPtrDst, 1, X86_PTE_A | X86_PTE_D, ~(uint64_t)(X86_PTE_A | X86_PTE_D));
     3256                    rc = PGMGstModifyPage(pVCpu, GCPtrDst, 1, X86_PTE_A | X86_PTE_D, ~(uint64_t)(X86_PTE_A | X86_PTE_D));
    32573257                    AssertRC(rc);
    32583258                }
     
    33233323                    if (!(fFlags1 & (X86_PTE_A | X86_PTE_RW)))
    33243324                    {
    3325                         rc = PGM_GST_PFN(ModifyPage,pVCpu)(pVCpu, GCPtrDst, 1, (X86_PTE_A | X86_PTE_RW), ~(uint64_t)(X86_PTE_A | X86_PTE_RW));
     3325                        rc = PGMGstModifyPage(pVCpu, GCPtrDst, 1, (X86_PTE_A | X86_PTE_RW), ~(uint64_t)(X86_PTE_A | X86_PTE_RW));
    33263326                        AssertRC(rc);
    33273327                    }
    33283328                    if (!(fFlags2 & (X86_PTE_A | X86_PTE_RW)))
    33293329                    {
    3330                         rc = PGM_GST_PFN(ModifyPage,pVCpu)(pVCpu, GCPtrDst + cb1, 1, (X86_PTE_A | X86_PTE_RW), ~(uint64_t)(X86_PTE_A | X86_PTE_RW));
     3330                        rc = PGMGstModifyPage(pVCpu, GCPtrDst + cb1, 1, (X86_PTE_A | X86_PTE_RW), ~(uint64_t)(X86_PTE_A | X86_PTE_RW));
    33313331                        AssertRC(rc);
    33323332                    }
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