Attributes::from_bits returns None if any unknown bits are set. The current Attributes structure is only valid for stage 2 translations, for stage 1 bit 63 is NSTable and may be set, resulting in None being returned.
This alone is likely fine, but the logic of is_table_or_page returns false if self.flags() is None (which should possibly be an unwrap?), which causes a L1 entry that has both the lowest 2 bits set (so is a valid table), but also has any high bits also set to incorrectly return false.
Attributes::from_bitsreturnsNoneif any unknown bits are set. The currentAttributesstructure is only valid for stage 2 translations, for stage 1 bit 63 is NSTable and may be set, resulting inNonebeing returned.This alone is likely fine, but the logic of
is_table_or_pagereturns false ifself.flags()isNone(which should possibly be an unwrap?), which causes a L1 entry that has both the lowest 2 bits set (so is a valid table), but also has any high bits also set to incorrectly returnfalse.