From 36d2dcb7451cbe21828097422006a99e9e64f730 Mon Sep 17 00:00:00 2001 From: Jonas 'Sortie' Termansen Date: Thu, 15 May 2014 17:23:34 +0200 Subject: [PATCH] Slightly improve addralloc virtual address space leaking. --- kernel/addralloc.cpp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/kernel/addralloc.cpp b/kernel/addralloc.cpp index d6724ada..deb64d44 100644 --- a/kernel/addralloc.cpp +++ b/kernel/addralloc.cpp @@ -1,6 +1,6 @@ /******************************************************************************* - Copyright(C) Jonas 'Sortie' Termansen 2013. + Copyright(C) Jonas 'Sortie' Termansen 2013, 2014. This file is part of Sortix. @@ -61,11 +61,20 @@ bool AllocateKernelAddress(addralloc_t* ret, size_t size) return true; } +// TODO: Proper deallocation support! void FreeKernelAddress(addralloc_t* alloc) { if ( !alloc->from ) return; - // Currently, nothing to do here. + + ScopedLock lock(&alloc_lock); + addr_t kmem_from; + size_t kmem_size; + Memory::GetKernelVirtualArea(&kmem_from, &kmem_size); + addr_t aux_reached = kmem_from + kmem_size - aux_allocated; + if ( alloc->from == aux_reached ) + aux_allocated -= alloc->size; + alloc->from = 0; alloc->size = 0; }