VirtualBox

Changeset 87530 in vbox for trunk/src


Ignore:
Timestamp:
Feb 2, 2021 11:27:43 AM (4 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
142556
Message:

VMM/HMVMX: Moving more stuff to HMR0PERVM. Set freed memory handles/pointers to NIL/NULL. bugref:9217

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

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp

    r87529 r87530  
    18451845 * Frees pages allocated using hmR0VmxPagesAllocZ.
    18461846 *
    1847  * @param   hMemObj     The ring-0 memory object associated with the allocation.
    1848  */
    1849 DECL_FORCE_INLINE(void) hmR0VmxPagesFree(RTR0MEMOBJ hMemObj)
     1847 * @param   phMemObj    Pointer to the memory object handle.  Will be set to
     1848 *                      NIL.
     1849 */
     1850DECL_FORCE_INLINE(void) hmR0VmxPagesFree(PRTR0MEMOBJ phMemObj)
    18501851{
    18511852    /* We can cleanup wholesale since it's all one allocation. */
    1852     RTR0MemObjFree(hMemObj, true /* fFreeMappings */);
     1853    if (*phMemObj != NIL_RTR0MEMOBJ)
     1854    {
     1855        RTR0MemObjFree(*phMemObj, true /* fFreeMappings */);
     1856        *phMemObj = NIL_RTR0MEMOBJ;
     1857    }
    18531858}
    18541859
     
    18891894static void hmR0VmxVmcsInfoFree(PVMXVMCSINFO pVmcsInfo, PVMXVMCSINFOSHARED pVmcsInfoShared)
    18901895{
    1891     if (pVmcsInfo->hMemObj != NIL_RTR0MEMOBJ)
    1892     {
    1893         hmR0VmxPagesFree(pVmcsInfo->hMemObj);
    1894         hmR0VmxVmcsInfoInit(pVmcsInfo, pVmcsInfoShared);
    1895     }
     1896    hmR0VmxPagesFree(&pVmcsInfo->hMemObj);
     1897    hmR0VmxVmcsInfoInit(pVmcsInfo, pVmcsInfoShared);
    18961898}
    18971899
     
    19741976static void hmR0VmxStructsFree(PVMCC pVM)
    19751977{
    1976     hmR0VmxPagesFree(pVM->hm.s.vmx.hMemObj);
     1978    hmR0VmxPagesFree(&pVM->hmr0.s.vmx.hMemObj);
    19771979#ifdef VBOX_WITH_NESTED_HWVIRT_VMX
    19781980    if (pVM->hm.s.vmx.fUseVmcsShadowing)
    19791981    {
    19801982        RTMemFree(pVM->hm.s.vmx.paShadowVmcsFields);
     1983        pVM->hm.s.vmx.paShadowVmcsFields = NULL;
    19811984        RTMemFree(pVM->hm.s.vmx.paShadowVmcsRoFields);
     1985        pVM->hm.s.vmx.paShadowVmcsRoFields = NULL;
    19821986    }
    19831987#endif
     
    20352039    };
    20362040
    2037     int rc = hmR0VmxPagesAllocZ(&pVM->hm.s.vmx.hMemObj, &aAllocInfo[0], RT_ELEMENTS(aAllocInfo));
     2041    int rc = hmR0VmxPagesAllocZ(&pVM->hmr0.s.vmx.hMemObj, &aAllocInfo[0], RT_ELEMENTS(aAllocInfo));
    20382042    if (RT_SUCCESS(rc))
    20392043    {
  • trunk/src/VBox/VMM/include/HMInternal.h

    r87523 r87530  
    589589         *  mode without paging emulation in EPT mode. */
    590590        R3PTRTYPE(PX86PD)           pNonPagingModeEPTPageTable;
    591 
    592         /** Ring-0 memory object for per-VM VMX structures. */
    593         RTR0MEMOBJ                  hMemObj;
    594591    } vmx;
    595592
     
    679676    uint32_t                    fHostKernelFeatures;
    680677
    681     /** SVM specific data. */
     678    /** VT-x specific data. */
     679    struct HMR0VMXVM
     680    {
     681        /** Ring-0 memory object for per-VM VMX structures. */
     682        RTR0MEMOBJ                  hMemObj;
     683
     684    } vmx;
     685
     686    /** AMD-V specific data. */
    682687    struct HMR0SVMVM
    683688    {
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette