diff --git a/kernel/src/objects/cnode.rs b/kernel/src/objects/cnode.rs index d8668c9..fd4303a 100644 --- a/kernel/src/objects/cnode.rs +++ b/kernel/src/objects/cnode.rs @@ -108,7 +108,8 @@ impl<'a> CNodeCap<'a> { }); } - let get_guard = || (cap_ptr >> (bits_remaining - guard_bits)) & MASK!(guard_bits); + let get_guard = + || cap_ptr.checked_shr((bits_remaining - guard_bits) as u32).unwrap_or_default() & MASK!(guard_bits); if guard_bits > bits_remaining || get_guard() != cap_guard { return Err(LookupFailure::GuardMismatch { bits_left: bits_remaining,