From 68156918ee5ee8150f11f5403439582dda0b9bb3 Mon Sep 17 00:00:00 2001 From: Alexander Boettcher Date: Tue, 4 Dec 2012 15:14:06 +0100 Subject: [PATCH] base: apply thread.cc fix of foc to base* With commit 1389b63050f359214b6b309c687f7cd0e280c6b2 in thread.cc for base-foc a bug was fixed, where the memory of the context got freed up before running the de-constructor. Apply the fix also to base and base-mb. --- base-mb/src/base/thread/thread.cc | 2 +- base/src/base/thread/thread.cc | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/base-mb/src/base/thread/thread.cc b/base-mb/src/base/thread/thread.cc index 9beb0a7553..ecab5b4a6a 100644 --- a/base-mb/src/base/thread/thread.cc +++ b/base-mb/src/base/thread/thread.cc @@ -164,9 +164,9 @@ void Thread_base::_free_context() { addr_t ds_addr = _context->stack_base - Native_config::context_area_virtual_base(); Ram_dataspace_capability ds_cap = _context->ds_cap; + _context_allocator()->free(this); Genode::env_context_area_rm_session()->detach((void *)ds_addr); Genode::env_context_area_ram_session()->free(ds_cap); - _context_allocator()->free(this); } diff --git a/base/src/base/thread/thread.cc b/base/src/base/thread/thread.cc index 5449f599f3..22e6d33008 100644 --- a/base/src/base/thread/thread.cc +++ b/base/src/base/thread/thread.cc @@ -161,12 +161,11 @@ Thread_base::Context *Thread_base::_alloc_context(size_t stack_size) void Thread_base::_free_context() { - addr_t ds_addr = _context->stack_base - - Native_config::context_area_virtual_base(); + addr_t ds_addr = _context->stack_base - Native_config::context_area_virtual_base(); Ram_dataspace_capability ds_cap = _context->ds_cap; + _context_allocator()->free(this); Genode::env_context_area_rm_session()->detach((void *)ds_addr); Genode::env_context_area_ram_session()->free(ds_cap); - _context_allocator()->free(this); }