From 2b0170fb6ab61b9b78783b3e909d7c4051029425 Mon Sep 17 00:00:00 2001 From: Alexander Boettcher Date: Wed, 6 Jan 2021 15:54:44 +0100 Subject: [PATCH] base-hw: ack thread capability on construction Fixes #3982 --- repos/base-hw/src/lib/base/thread_bootstrap.cc | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/repos/base-hw/src/lib/base/thread_bootstrap.cc b/repos/base-hw/src/lib/base/thread_bootstrap.cc index 48e0754f4a..df7e82e0e1 100644 --- a/repos/base-hw/src/lib/base/thread_bootstrap.cc +++ b/repos/base-hw/src/lib/base/thread_bootstrap.cc @@ -46,12 +46,15 @@ void prepare_init_main_thread() */ Native_utcb * utcb = Thread::myself()->utcb(); _parent_cap = Capability_space::import(utcb->cap_get(Native_utcb::PARENT)); + Kernel::ack_cap(Capability_space::capid(_parent_cap)); Untyped_capability ds_cap = Capability_space::import(utcb->cap_get(Native_utcb::UTCB_DATASPACE)); _main_thread_utcb_ds = reinterpret_cap_cast(ds_cap); + Kernel::ack_cap(Capability_space::capid(_main_thread_utcb_ds)); _main_thread_cap = Capability_space::import(utcb->cap_get(Native_utcb::THREAD_MYSELF)); + Kernel::ack_cap(Capability_space::capid(_main_thread_cap)); } @@ -83,4 +86,6 @@ void Thread::_thread_bootstrap() { Kernel::capid_t capid = myself()->utcb()->cap_get(Native_utcb::THREAD_MYSELF); native_thread().cap = Capability_space::import(capid); + if (native_thread().cap.valid()) + Kernel::ack_cap(Capability_space::capid(native_thread().cap)); }