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); }