summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorneal <neal>2007-12-12 17:51:05 +0000
committerneal <neal>2007-12-12 17:51:05 +0000
commitc6db87c3de0012174f1ec96eb4922ab2678b701d (patch)
tree2c042ab84da45237f33eef68ca29b47d45249a06
parent8eb5ea7006b2d9f37ce753bb10e0a1efcd5e76d3 (diff)
2007-12-12 Neal H. Walfield <neal@gnu.org>
* mmap.c (munmap): Free the virtual addresses.
-rw-r--r--libhurd-mm/ChangeLog4
-rw-r--r--libhurd-mm/mmap.c3
2 files changed, 7 insertions, 0 deletions
diff --git a/libhurd-mm/ChangeLog b/libhurd-mm/ChangeLog
index bd9a4d3..5256ecc 100644
--- a/libhurd-mm/ChangeLog
+++ b/libhurd-mm/ChangeLog
@@ -1,5 +1,9 @@
2007-12-12 Neal H. Walfield <neal@gnu.org>
+ * mmap.c (munmap): Free the virtual addresses.
+
+2007-12-12 Neal H. Walfield <neal@gnu.org>
+
* storage.c (ss_lock_trace) [! NDEBUG]: New definition.
(ss_lock_trace_count) [! NDEBUG]: Likewise.
diff --git a/libhurd-mm/mmap.c b/libhurd-mm/mmap.c
index 9a0c180..3cf7fae 100644
--- a/libhurd-mm/mmap.c
+++ b/libhurd-mm/mmap.c
@@ -113,6 +113,7 @@ munmap (void *addr, size_t length)
ss_mutex_lock (&pager->lock);
+ struct pager_region region = pager->region;
l4_uint64_t pager_start = addr_prefix (pager->region.start);
l4_uint64_t pager_end = pager_start
+ (pager->region.count
@@ -131,6 +132,8 @@ munmap (void *addr, size_t length)
ss_mutex_unlock (&pagers_lock);
pager->destroy (pager);
+
+ as_free (region.start, region.count);
}
return 0;