Index: /trunk/src/VBox/HostDrivers/Support/darwin/SUPDrv-darwin.c
===================================================================
--- /trunk/src/VBox/HostDrivers/Support/darwin/SUPDrv-darwin.c	(revision 218)
+++ /trunk/src/VBox/HostDrivers/Support/darwin/SUPDrv-darwin.c	(revision 219)
@@ -378,4 +378,5 @@
 {
     int                 rc;
+    void               *pvPageBuf = NULL;
     void               *pvBuf = NULL;
     int                 cbBuf = 0;
@@ -401,4 +402,6 @@
         MALLOC(pvBuf, void *, cbBuf, M_TEMP, M_WAITOK);
         if (pvBuf == NULL)
+            pvPageBuf = pvBuf = IOMallocAligned(cbBuf, 8);
+        if (pvBuf == NULL)
         {
             dprintf(("VBoxSupDrvIOCtl: failed to allocate buffer of %d bytes.\n", cbBuf));
@@ -409,5 +412,8 @@
         {
             dprintf(("VBoxSupDrvIOCtl: copyin(%p,,%d) failed.\n", pArgs->pvIn, cbBuf));
-            FREE(pvBuf, M_TEMP);
+            if (pvPageBuf)
+                IOFreeAligned(pvPageBuf, cbBuf);
+            else
+                FREE(pvBuf, M_TEMP);
             return rc;
         }
@@ -447,5 +453,7 @@
     }
 
-    if (pvBuf)
+    if (pvPageBuf)
+        IOFreeAligned(pvPageBuf, cbBuf);
+    else if (pvBuf)
         FREE(pvBuf, M_TEMP);
 
