Index: /trunk/src/VBox/GuestHost/HGSMI/HGSMICommon.cpp
===================================================================
--- /trunk/src/VBox/GuestHost/HGSMI/HGSMICommon.cpp	(revision 70604)
+++ /trunk/src/VBox/GuestHost/HGSMI/HGSMICommon.cpp	(revision 70605)
@@ -282,7 +282,7 @@
 typedef struct HGSMIBUFFERCONTEXT
 {
-    const HGSMIBUFFERHEADER *pHeader; /* The original buffer header. */
-    void *pvData;                     /* Payload data in the buffer./ */
-    uint32_t cbData;                  /* Size of data  */
+    const volatile HGSMIBUFFERHEADER *pHeader; /**< The original buffer header. */
+    void *pvData;                              /**< Payload data in the buffer./ */
+    uint32_t cbData;                           /**< Size of data  */
 } HGSMIBUFFERCONTEXT;
 
@@ -315,4 +315,5 @@
         void *pvBuffer = HGSMIOffsetToPointer(pArea, offBuffer);
         HGSMIBUFFERHEADER header = *HGSMIBufferHeaderFromPtr(pvBuffer);
+        ASMCompilerBarrier();
 
         /* Quick check of the data size, it should be less than the maximum
@@ -325,4 +326,5 @@
         {
             HGSMIBUFFERTAIL tail = *HGSMIBufferTailFromPtr(pvBuffer, header.u32DataSize);
+            ASMCompilerBarrier();
 
             /* At least both header and tail structures are in the area. Check the checksum. */
