diff -r 11c290b5edf9 src/syscall.cpp --- a/src/syscall.cpp Wed Nov 09 14:50:18 2011 +0100 +++ b/src/syscall.cpp Wed Nov 09 15:07:03 2011 +0100 @@ -244,11 +244,13 @@ } Pd *pd = static_cast(cap.obj()); - if (EXPECT_FALSE (r->utcb() >= USER_ADDR || r->utcb() & PAGE_MASK || !pd->insert_utcb (r->utcb()))) { + if (EXPECT_FALSE (r->utcb() >= USER_ADDR || r->utcb() & PAGE_MASK)) { trace (TRACE_ERROR, "%s: Invalid UTCB address (%#lx)", __func__, r->utcb()); sys_finish(); } + pd->insert_utcb (r->utcb()); + Ec *ec = new Ec (Pd::current, r->sel(), pd, r->flags() & 1 ? static_cast(send_msg) : nullptr, r->cpu(), r->evt(), r->utcb(), r->esp()); if (!Space_obj::insert_root (ec)) {