[vbox-dev] [PATCH] FreeBSD memobj r0: avoid double deallocation of vm_object after vm_map_remove

Bernhard Froehlich decke at bluelife.at
Fri Mar 9 22:14:45 GMT 2012


We also tested the memobj r0 patch which is already committed to vbox 
trunk
in the FreeBSD port and found some bugs. Here are the fixes for them.

The Author agrees that those 4 patches are under MIT License.

-- 
Bernhard Fröhlich
http://www.bluelife.at/

-------- Original Message --------
Subject: [PATCH] avoid double deallocation of vm_object after 
vm_map_remove
Date: 09.03.2012 22:56
 From: Andriy Gapon <avg at icyb.net.ua>
To: Bernhard Froehlich <decke at FreeBSD.org>

Signed-off-by: Andriy Gapon <avg at icyb.net.ua>

---
  .../Runtime/r0drv/freebsd/memobj-r0drv-freebsd.c   |    8 +++++---
  1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/src/VBox/Runtime/r0drv/freebsd/memobj-r0drv-freebsd.c 
b/src/VBox/Runtime/r0drv/freebsd/memobj-r0drv-freebsd.c
index 75427ab..5c04e7f 100644
--- a/src/VBox/Runtime/r0drv/freebsd/memobj-r0drv-freebsd.c
+++ b/src/VBox/Runtime/r0drv/freebsd/memobj-r0drv-freebsd.c
@@ -287,9 +287,11 @@ static int 
rtR0MemObjFreeBSDAllocHelper(PRTR0MEMOBJFREEBSD pMemFreeBSD, bool fEx

          vm_map_remove(kernel_map, MapAddress, MapAddress + 
pMemFreeBSD->Core.cb);
      }
-    rc = rcNoMem; /** @todo fix translation (borrow from darwin) */
-
-    vm_object_deallocate(pMemFreeBSD->pObject);
+    else
+    {
+        rc = rcNoMem; /** @todo fix translation (borrow from darwin) 
*/
+        vm_object_deallocate(pMemFreeBSD->pObject);
+    }
      rtR0MemObjDelete(&pMemFreeBSD->Core);
      return rc;
  }




More information about the vbox-dev mailing list