VirtualBox

Changeset 71591 in vbox for trunk/src/VBox/GuestHost/HGSMI


Ignore:
Timestamp:
Mar 31, 2018 6:40:01 PM (7 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
121580
Message:

DevVGA,HGSMI,++: Code cleanup in progress. bugref:9094

Location:
trunk/src/VBox/GuestHost/HGSMI
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/GuestHost/HGSMI/HGSMICommon.cpp

    r70605 r71591  
    8989}
    9090
    91 static uint32_t hgsmiHashProcess(uint32_t hash,
    92                                  const void *pvData,
    93                                  size_t cbData)
     91static uint32_t hgsmiHashProcess(uint32_t hash, const void RT_UNTRUSTED_VOLATILE_HSTGST *pvData, size_t cbData)
    9492{
    9593    const uint8_t *pu8Data = (const uint8_t *)pvData;
     
    114112}
    115113
    116 uint32_t HGSMIChecksum(HGSMIOFFSET offBuffer,
    117                        const HGSMIBUFFERHEADER *pHeader,
    118                        const HGSMIBUFFERTAIL *pTail)
     114uint32_t HGSMIChecksum(HGSMIOFFSET offBuffer, const HGSMIBUFFERHEADER RT_UNTRUSTED_VOLATILE_HSTGST *pHeader,
     115                       const HGSMIBUFFERTAIL RT_UNTRUSTED_VOLATILE_HSTGST *pTail)
    119116{
    120117    uint32_t u32Checksum = hgsmiHashBegin();
     
    127124}
    128125
    129 int HGSMIAreaInitialize(HGSMIAREA *pArea,
    130                         void *pvBase,
    131                         HGSMISIZE cbArea,
    132                         HGSMIOFFSET offBase)
     126int HGSMIAreaInitialize(HGSMIAREA *pArea, void *pvBase, HGSMISIZE cbArea, HGSMIOFFSET offBase)
    133127{
    134128    uint8_t *pu8Base = (uint8_t *)pvBase;
     
    198192    RT_ZERO(pHeader->u.au8Union);
    199193
    200     HGSMIBUFFERTAIL *pTail = HGSMIBufferTailFromPtr(pHeader, u32DataSize);
     194    HGSMIBUFFERTAIL RT_UNTRUSTED_VOLATILE_HSTGST *pTail = HGSMIBufferTailFromPtr(pHeader, u32DataSize);
    201195    pTail->u32Reserved = 0;
    202196    pTail->u32Checksum = HGSMIChecksum(offBuffer, pHeader, pTail);
     
    205199}
    206200
    207 int HGSMIHeapSetup(HGSMIHEAP *pHeap,
    208                    void *pvBase,
    209                    HGSMISIZE cbArea,
    210                    HGSMIOFFSET offBase,
    211                    const HGSMIENV *pEnv)
     201int HGSMIHeapSetup(HGSMIHEAP *pHeap, void *pvBase, HGSMISIZE cbArea, HGSMIOFFSET offBase, const HGSMIENV *pEnv)
    212202{
    213203    HGSMI_ASSERT_PTR_RETURN(pHeap, VERR_INVALID_PARAMETER);
     
    236226}
    237227
    238 void *HGSMIHeapAlloc(HGSMIHEAP *pHeap,
    239                      HGSMISIZE cbData,
    240                      uint8_t u8Channel,
    241                      uint16_t u16ChannelInfo)
     228void RT_UNTRUSTED_VOLATILE_HOST *HGSMIHeapAlloc(HGSMIHEAP *pHeap,
     229                                                HGSMISIZE cbData,
     230                                                uint8_t u8Channel,
     231                                                uint16_t u16ChannelInfo)
    242232{
    243233    HGSMISIZE cbAlloc = HGSMIBufferRequiredSize(cbData);
     
    257247}
    258248
    259 void HGSMIHeapFree(HGSMIHEAP *pHeap,
    260                    void *pvData)
     249void HGSMIHeapFree(HGSMIHEAP *pHeap, void RT_UNTRUSTED_VOLATILE_GUEST *pvData)
    261250{
    262251    if (pvData)
    263252    {
    264         HGSMIBUFFERHEADER *pHeader = HGSMIBufferHeaderFromData(pvData);
     253        HGSMIBUFFERHEADER RT_UNTRUSTED_VOLATILE_HOST *pHeader = HGSMIBufferHeaderFromData(pvData);
    265254        HGSMIHeapBufferFree(pHeap, pHeader);
    266255    }
    267256}
    268257
    269 void *HGSMIHeapBufferAlloc(HGSMIHEAP *pHeap,
    270                            HGSMISIZE cbBuffer)
    271 {
    272     void *pvBuf = HGSMIMAAlloc(&pHeap->ma, cbBuffer);
    273     return pvBuf;
    274 }
    275 
    276 void HGSMIHeapBufferFree(HGSMIHEAP *pHeap,
    277                          void *pvBuf)
     258void RT_UNTRUSTED_VOLATILE_HSTGST *HGSMIHeapBufferAlloc(HGSMIHEAP *pHeap, HGSMISIZE cbBuffer)
     259{
     260    return HGSMIMAAlloc(&pHeap->ma, cbBuffer);
     261}
     262
     263void HGSMIHeapBufferFree(HGSMIHEAP *pHeap, void RT_UNTRUSTED_VOLATILE_GUEST *pvBuf)
    278264{
    279265    HGSMIMAFree(&pHeap->ma, pvBuf);
     
    282268typedef struct HGSMIBUFFERCONTEXT
    283269{
    284     const volatile HGSMIBUFFERHEADER *pHeader; /**< The original buffer header. */
    285     void *pvData;                              /**< Payload data in the buffer./ */
    286     uint32_t cbData;                           /**< Size of data  */
     270    /** The original buffer header. */
     271    const HGSMIBUFFERHEADER RT_UNTRUSTED_VOLATILE_HSTGST *pHeader;
     272    /** Payload data in the buffer. */
     273    void RT_UNTRUSTED_VOLATILE_HSTGST *pvData;
     274    /** Size of data  */
     275    uint32_t cbData;
    287276} HGSMIBUFFERCONTEXT;
    288277
     
    294283 * @param pBufferContext Where to write information about the buffer.
    295284 */
    296 static int hgsmiVerifyBuffer(const HGSMIAREA *pArea,
    297                              HGSMIOFFSET offBuffer,
    298                              HGSMIBUFFERCONTEXT *pBufferContext)
     285static int hgsmiVerifyBuffer(const HGSMIAREA *pArea, HGSMIOFFSET offBuffer, HGSMIBUFFERCONTEXT *pBufferContext)
    299286{
    300287    // LogFlowFunc(("buffer 0x%x, area %p %x [0x%x;0x%x]\n",
     
    313300    else
    314301    {
    315         void *pvBuffer = HGSMIOffsetToPointer(pArea, offBuffer);
    316         HGSMIBUFFERHEADER header = *HGSMIBufferHeaderFromPtr(pvBuffer);
     302        void RT_UNTRUSTED_VOLATILE_HSTGST *pvBuffer = HGSMIOffsetToPointer(pArea, offBuffer);
     303        HGSMIBUFFERHEADER header;
     304        memcpy(&header, (void *)HGSMIBufferHeaderFromPtr(pvBuffer), sizeof(header));
    317305        ASMCompilerBarrier();
    318306
     
    325313        if (header.u32DataSize <= pArea->offLast - offBuffer)
    326314        {
    327             HGSMIBUFFERTAIL tail = *HGSMIBufferTailFromPtr(pvBuffer, header.u32DataSize);
     315            HGSMIBUFFERTAIL tail;
     316            memcpy(&tail, (void *)HGSMIBufferTailFromPtr(pvBuffer, header.u32DataSize), sizeof(tail));
    328317            ASMCompilerBarrier();
    329318
  • trunk/src/VBox/GuestHost/HGSMI/HGSMIMemAlloc.cpp

    r69634 r71591  
    575575}
    576576
    577 HGSMIOFFSET HGSMIMAPointerToOffset(const HGSMIMADATA *pMA, const void *pv)
    578 {
    579     if (HGSMIAreaContainsPointer(&pMA->area, pv))
    580     {
    581         return HGSMIPointerToOffset(&pMA->area, pv);
    582     }
     577HGSMIOFFSET HGSMIMAPointerToOffset(const HGSMIMADATA *pMA, const void RT_UNTRUSTED_VOLATILE_GUEST *pv)
     578{
     579    uintptr_t off = (uintptr_t)pv - (uintptr_t)pMA->area.pu8Base;
     580    if (off < pMA->area.cbArea)
     581        return pMA->area.offBase + off;
    583582
    584583    HGSMI_ASSERT_FAILED();
     
    586585}
    587586
    588 void *HGSMIMAOffsetToPointer(const HGSMIMADATA *pMA, HGSMIOFFSET off)
     587static void RT_UNTRUSTED_VOLATILE_HSTGST *HGSMIMAOffsetToPointer(const HGSMIMADATA *pMA, HGSMIOFFSET off)
    589588{
    590589    if (HGSMIAreaContainsOffset(&pMA->area, off))
     
    597596}
    598597
    599 void *HGSMIMAAlloc(HGSMIMADATA *pMA, HGSMISIZE cb)
     598void RT_UNTRUSTED_VOLATILE_HSTGST *HGSMIMAAlloc(HGSMIMADATA *pMA, HGSMISIZE cb)
    600599{
    601600    HGSMIOFFSET off = hgsmiMAAlloc(pMA, cb);
     
    603602}
    604603
    605 void HGSMIMAFree(HGSMIMADATA *pMA, void *pv)
     604void HGSMIMAFree(HGSMIMADATA *pMA, void RT_UNTRUSTED_VOLATILE_GUEST *pv)
    606605{
    607606    HGSMIOFFSET off = HGSMIMAPointerToOffset(pMA, pv);
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