Index: /trunk/include/VBox/VBoxGuest.h
===================================================================
--- /trunk/include/VBox/VBoxGuest.h	(revision 1642)
+++ /trunk/include/VBox/VBoxGuest.h	(revision 1643)
@@ -30,4 +30,12 @@
 *   Defined Constants And Macros                                               *
 *******************************************************************************/
+
+/** @todo The following is a temporary fix for the problem of accessing
+    hypervisor pointers from within guest additions */
+
+/** Hypervisor linear pointer size type */
+typedef uint32_t vmmDevHypPtr;
+/** Hypervisor physical pointer size type */
+typedef uint32_t vmmDevHypPhys;
 
 #ifdef __WIN__
@@ -250,5 +258,5 @@
     VMMDevRequestHeader header;
     /** guest virtual address of proposed hypervisor start */
-    RTGCPTR hypervisorStart;
+    vmmDevHypPtr hypervisorStart;
     /** hypervisor size in bytes */
     uint32_t hypervisorSize;
@@ -449,6 +457,6 @@
             union
             {
-                RTGCPHYS physAddr;
-                RTGCPTR  linearAddr;
+                vmmDevHypPhys physAddr;
+                vmmDevHypPtr  linearAddr;
             } u;
         } Pointer;
Index: /trunk/src/VBox/Additions/linux/module/vboxmod.c
===================================================================
--- /trunk/src/VBox/Additions/linux/module/vboxmod.c	(revision 1642)
+++ /trunk/src/VBox/Additions/linux/module/vboxmod.c	(revision 1643)
@@ -324,6 +324,8 @@
                 {
                     /* We are sending data to the host or sending and reading. */
+                    void *pvR3LinAddr
+                        = (void *)VBOXGUEST_HGCM_CALL_PARMS(hgcmR3)[i].u.Pointer.u.linearAddr;
                     if (copy_from_user(&pu8PointerData[offPointerData],
-                                       VBOXGUEST_HGCM_CALL_PARMS(hgcmR3)[i].u.Pointer.u.linearAddr,
+                                       pvR3LinAddr,
                                        VBOXGUEST_HGCM_CALL_PARMS(hgcmR3)[i].u.Pointer.size))
                     {
@@ -333,5 +335,5 @@
                     }
                     VBOXGUEST_HGCM_CALL_PARMS(hgcmR0)[i].u.Pointer.u.linearAddr
-                        = &pu8PointerData[offPointerData];
+                        = (vmmDevHypPtr)&pu8PointerData[offPointerData];
                     VBOXGUEST_HGCM_CALL_PARMS(hgcmR0)[i].u.Pointer.size
                         = VBOXGUEST_HGCM_CALL_PARMS(hgcmR3)[i].u.Pointer.size;
@@ -343,5 +345,5 @@
                     /* We are reading data from the host */
                     VBOXGUEST_HGCM_CALL_PARMS(hgcmR0)[i].u.Pointer.u.linearAddr
-                        = &pu8PointerData[offPointerData];
+                        = (vmmDevHypPtr)&pu8PointerData[offPointerData];
                     VBOXGUEST_HGCM_CALL_PARMS(hgcmR0)[i].u.Pointer.size
                         = VBOXGUEST_HGCM_CALL_PARMS(hgcmR3)[i].u.Pointer.size;
@@ -371,6 +373,9 @@
                 {
                     /* We are sending data to the host or sending and reading. */
-                    if (copy_to_user(VBOXGUEST_HGCM_CALL_PARMS(hgcmR3)[i].u.Pointer.u.linearAddr,
-                                     VBOXGUEST_HGCM_CALL_PARMS(hgcmR0)[i].u.Pointer.u.linearAddr,
+                    void *pvR3LinAddr
+                        = (void *)VBOXGUEST_HGCM_CALL_PARMS(hgcmR3)[i].u.Pointer.u.linearAddr;
+                    void *pvR0LinAddr
+                        = (void *)VBOXGUEST_HGCM_CALL_PARMS(hgcmR0)[i].u.Pointer.u.linearAddr;
+                    if (copy_to_user(pvR3LinAddr, pvR0LinAddr,
                                      VBOXGUEST_HGCM_CALL_PARMS(hgcmR0)[i].u.Pointer.size))
                     {
@@ -555,5 +560,5 @@
             {
                 /* communicate result to VMM, align at 4MB */
-                req->hypervisorStart    = (RTGCPTR)ALIGNP(hypervisorArea, 0x400000);
+                req->hypervisorStart    = (vmmDevHypPtr)ALIGNP(hypervisorArea, 0x400000);
                 req->header.requestType = VMMDevReq_SetHypervisorInfo;
                 req->header.rc          = VERR_GENERAL_FAILURE;
