Skip to content

Descriptor::is_table_or_page incorrectly returns false if underlying descriptor is in L1 and has NS bit (63) set #67

@fmckeogh

Description

@fmckeogh

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.

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions