core: avoid null pointer reference warning

Issue #3022
This commit is contained in:
Alexander Boettcher 2018-10-30 08:52:43 +01:00 committed by Norman Feske
parent 8db02b0a39
commit 7536b665f1
15 changed files with 32 additions and 33 deletions

View File

@ -151,7 +151,7 @@ void Ipc_pager::acknowledge_exception()
Ipc_pager::Ipc_pager()
:
Native_capability(*(Cap_index*)Fiasco::l4_utcb_tcr()->user[Fiasco::UTCB_TCR_BADGE]),
Native_capability((Cap_index*)Fiasco::l4_utcb_tcr()->user[Fiasco::UTCB_TCR_BADGE]),
_badge(0)
{ }

View File

@ -133,7 +133,7 @@ Platform::Sigma0::Sigma0(Cap_index* i)
* We use the Pager_object here in a slightly different manner,
* just to tunnel the pager cap to the Platform_thread::start method.
*/
cap(*i);
cap(i);
}

View File

@ -114,15 +114,15 @@ void Platform_pd::flush(addr_t, size_t size, Core_local_addr core_local)
}
static Core_cap_index & debug_cap()
static Core_cap_index * debug_cap()
{
unsigned long id = platform_specific()->cap_id_alloc()->alloc();
static Cap_index * idx = cap_map()->insert(id, DEBUG_CAP);
return *reinterpret_cast<Core_cap_index*>(idx);
return reinterpret_cast<Core_cap_index*>(idx);
}
Platform_pd::Platform_pd(Core_cap_index* i)
: _task(Native_capability(*i), TASK_CAP)
: _task(Native_capability(i), TASK_CAP)
{
for (unsigned i = 0; i < THREAD_MAX; i++)
_threads[i] = (Platform_thread*) 0;

View File

@ -304,8 +304,8 @@ Platform_thread::Platform_thread(Core_cap_index* thread,
Core_cap_index* irq, const char *name)
: _state(RUNNING),
_core_thread(true),
_thread(Native_capability(*thread), L4_BASE_THREAD_CAP),
_irq(Native_capability(*irq)),
_thread(Native_capability(thread), L4_BASE_THREAD_CAP),
_irq(Native_capability(irq)),
_utcb(0),
_platform_pd(0),
_pager_obj(0),

View File

@ -77,7 +77,7 @@ void Cap_mapping::map(Fiasco::l4_cap_idx_t task)
Cap_mapping::Cap_mapping(bool alloc, Fiasco::l4_cap_idx_t r)
: local(alloc ? *_get_cap() : *(Native_capability::Data *)nullptr), remote(r) { }
: local(alloc ? _get_cap() : (Native_capability::Data *)nullptr), remote(r) { }
Cap_mapping::Cap_mapping(Native_capability cap, Fiasco::l4_cap_idx_t r)
@ -131,7 +131,7 @@ Native_capability Rpc_cap_factory::alloc(Native_capability ep)
// XXX remove cast
idx->session((Pd_session_component *)this);
idx->pt(ref->pt());
cap = Native_capability(*idx);
cap = Native_capability(idx);
} catch (Cap_id_allocator::Out_of_ids) {
error("out of capability IDs");
}

View File

@ -70,7 +70,7 @@ Signal_source::Signal Signal_source_component::wait_for_signal()
Signal_source_component::Signal_source_component(Rpc_entrypoint *ep)
:
Signal_source_rpc_object(*cap_map()->insert(platform_specific()->cap_id_alloc()->alloc())),
Signal_source_rpc_object(cap_map()->insert(platform_specific()->cap_id_alloc()->alloc())),
_entrypoint(ep)
{
using namespace Fiasco;

View File

@ -44,7 +44,7 @@ namespace Genode {
i = cap_map()->insert(local_name, Fiasco::PARENT_CAP);
}
return reinterpret_cap_cast<Parent>(Native_capability(*i));
return reinterpret_cap_cast<Parent>(Native_capability(i));
}
}

View File

@ -159,8 +159,8 @@ static unsigned long extract_msg_from_utcb(l4_msgtag_t tag,
*/
for (unsigned i = 0; i < num_caps; i++) {
if (caps[i].valid) {
rcv_msg.insert(Native_capability(*cap_map()->insert_map(caps[i].badge,
caps[i].sel)));
rcv_msg.insert(Native_capability(cap_map()->insert_map(caps[i].badge,
caps[i].sel)));
} else {
rcv_msg.insert(Native_capability());
}
@ -367,7 +367,7 @@ Genode::Rpc_request Genode::ipc_reply_wait(Reply_capability const &,
Ipc_server::Ipc_server()
:
Native_capability(*(Cap_index*)Fiasco::l4_utcb_tcr()->user[Fiasco::UTCB_TCR_BADGE])
Native_capability((Cap_index*)Fiasco::l4_utcb_tcr()->user[Fiasco::UTCB_TCR_BADGE])
{
Thread::myself()->native_thread().rcv_window.init();
}

View File

@ -45,7 +45,7 @@ Main::Main(Env &env)
idx->kcap() | L4_ITEM_MAP);
Log_session_capability log_session_cap =
reinterpret_cap_cast<Log_session>(Native_capability(*idx));
reinterpret_cap_cast<Log_session>(Native_capability(idx));
Log_session_client log_session_client(log_session_cap);
try {
log_session_client.write("test message");

View File

@ -33,7 +33,7 @@ namespace Genode { namespace Capability_space {
static inline Native_capability import(Kernel::capid_t capid)
{
return Native_capability(*(Native_capability::Data *)(addr_t)capid);
return Native_capability((Native_capability::Data *)(addr_t)capid);
}
} }

View File

@ -40,7 +40,7 @@ namespace Genode { namespace Capability_space {
{
Nova::Obj_crd const crd = (sel == INVALID_INDEX)
? Nova::Obj_crd() : Nova::Obj_crd(sel, 0, rights);
return Native_capability(*(Native_capability::Data *)crd.value());
return Native_capability((Native_capability::Data *)crd.value());
}
} }

View File

@ -113,7 +113,7 @@ Capability_space::create_rpc_obj_cap(Native_capability ep_cap,
ASSERT(ret == seL4_NoError);
}
return Native_capability(data);
return Native_capability(&data);
}
@ -132,7 +132,7 @@ Native_capability Capability_space::create_ep_cap(Thread &ep_thread)
local_capability_space().create_capability(ep_sel, pd_session,
Rpc_obj_key());
return Native_capability(data);
return Native_capability(&data);
}
@ -164,7 +164,7 @@ Native_capability Capability_space::lookup(Rpc_obj_key rpc_obj_key)
{
Native_capability::Data *data = local_capability_space().lookup(rpc_obj_key);
return data ? Native_capability(*data) : Native_capability();
return data ? Native_capability(data) : Native_capability();
}
@ -189,7 +189,7 @@ Native_capability Capability_space::import(Ipc_cap_data ipc_cap_data)
local_capability_space().create_capability(ipc_cap_data.sel, pd_session,
ipc_cap_data.rpc_obj_key);
return Native_capability(data);
return Native_capability(&data);
}
@ -202,5 +202,5 @@ Capability_space::create_notification_cap(Cap_sel &notify_cap)
local_capability_space().create_capability(notify_cap, pd_session,
Rpc_obj_key());
return Native_capability(data);
return Native_capability(&data);
}

View File

@ -97,9 +97,8 @@ Native_capability Capability_space::create_ep_cap(Thread &ep_thread)
{
Cap_sel const ep_sel = Cap_sel(ep_thread.native_thread().ep_sel);
Native_capability::Data &data =
local_capability_space().create_capability(ep_sel, Rpc_obj_key());
Native_capability::Data *data =
&local_capability_space().create_capability(ep_sel, Rpc_obj_key());
return Native_capability(data);
}
@ -138,7 +137,7 @@ Native_capability Capability_space::lookup(Rpc_obj_key rpc_obj_key)
{
Native_capability::Data *data = local_capability_space().lookup(rpc_obj_key);
return data ? Native_capability(*data) : Native_capability();
return data ? Native_capability(data) : Native_capability();
}
@ -162,9 +161,9 @@ void Capability_space::reset_sel(unsigned sel)
Native_capability Capability_space::import(Ipc_cap_data ipc_cap_data)
{
Native_capability::Data &data =
local_capability_space().create_capability(ipc_cap_data.sel,
ipc_cap_data.rpc_obj_key);
Native_capability::Data *data =
&local_capability_space().create_capability(ipc_cap_data.sel,
ipc_cap_data.rpc_obj_key);
return Native_capability(data);
}

View File

@ -68,7 +68,7 @@ class Genode::Native_capability
*
* \noapi
*/
Native_capability(Data &data) : _data(&data) { _inc(); }
Native_capability(Data *data) : _data(data) { _inc(); }
/**
* Destructor
@ -78,7 +78,7 @@ class Genode::Native_capability
Data const *data() const { return _data; }
/**
* Overloaded comparision operator
* Overloaded comparison operator
*/
bool operator == (const Native_capability &o) const
{

View File

@ -198,12 +198,12 @@ class Genode::Capability_space_tpl
Native_capability lookup(Rpc_obj_key rpc_obj_key)
{
Native_capability::Data *data = _lookup(rpc_obj_key);
return data ? Native_capability(*data) : Native_capability();
return data ? Native_capability(data) : Native_capability();
}
Native_capability import(Rpc_destination dst, Rpc_obj_key key)
{
return Native_capability(create_capability(dst, key));
return Native_capability(&create_capability(dst, key));
}
};