VirtualBox

Changeset 18212 in vbox


Ignore:
Timestamp:
Mar 24, 2009 6:15:39 PM (16 years ago)
Author:
vboxsync
Message:

GMM: Fixed bugs in gmmR0AllocateChunkId and gmmR0FreePageWorker, the later causing memory leaks on reset.

File:
1 edited

Legend:

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

    r18204 r18212  
    13341334static void gmmR0FreeChunkId(PGMM pGMM, uint32_t idChunk)
    13351335{
    1336     Assert(idChunk != NIL_GMM_CHUNKID);
    1337     Assert(ASMBitTest(&pGMM->bmChunkId[0], idChunk));
     1336    AssertReturnVoid(idChunk != NIL_GMM_CHUNKID);
     1337    AssertMsg(ASMBitTest(&pGMM->bmChunkId[0], idChunk), ("%#x\n", idChunk));
    13381338    ASMAtomicBitClear(&pGMM->bmChunkId[0], idChunk);
    13391339}
     
    13701370        idChunk = ASMBitNextClear(&pGMM->bmChunkId[0], GMM_CHUNKID_LAST + 1, idChunk);
    13711371        if (idChunk > NIL_GMM_CHUNKID)
     1372        {
     1373            AssertMsgReturn(!ASMAtomicBitTestAndSet(&pGMM->bmChunkId[0], idChunk), ("%#x\n", idChunk), NIL_GVM_HANDLE);
    13721374            return pGMM->idChunkPrev = idChunk;
     1375        }
    13731376    }
    13741377
     
    13781381     */
    13791382    idChunk = ASMBitFirstClear(&pGMM->bmChunkId[0], GMM_CHUNKID_LAST + 1);
    1380     AssertMsgReturn(idChunk > NIL_GMM_CHUNKID, ("%d\n", idChunk), NIL_GVM_HANDLE);
    1381     AssertMsgReturn(!ASMAtomicBitTestAndSet(&pGMM->bmChunkId[0], idChunk), ("%d\n", idChunk), NIL_GVM_HANDLE);
     1383    AssertMsgReturn(idChunk > NIL_GMM_CHUNKID, ("%#x\n", idChunk), NIL_GVM_HANDLE);
     1384    AssertMsgReturn(!ASMAtomicBitTestAndSet(&pGMM->bmChunkId[0], idChunk), ("%#x\n", idChunk), NIL_GVM_HANDLE);
    13821385
    13831386    return pGMM->idChunkPrev = idChunk;
     
    21012104        if (RT_UNLIKELY(   pChunk->cFree == GMM_CHUNK_NUM_PAGES
    21022105                        && pChunk->pFreeNext
    2103                         && pChunk->pFreePrev))
     2106                        && pChunk->pFreePrev
     2107                        && !pGMM->fLegacyMode))
    21042108            gmmR0FreeChunk(pGMM, pChunk);
    21052109    }
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