v7M MPU does not implement ACL disjointness check
- Dominant language
- C
- Stars
- 135
- Forks
- 72
- PR merge metrics
- No merged PRs in 30d
Description
A box can request two types of ACL (IRQs and Peripherals). A peripheral ACL is given as a base address and size with an access-control. Peripheral ACLs should be checked for disjointness to ensure that two boxes do not clash. That is all peripheral ACL pairs should be non-overlapping. An exception is made if both peripheral ACLs request exactly the same region (base and size) and the access-control for each has the SHARED flag set.
This check is not currently implemented in the v7M MPU.
Additionally:
- The disjointness check does not include the static background regions setup by the uVisor
- The disjointness check includes the implicit ACL that will be setup for each non-main box stack/context
Potential ambiguities:
- The interaction of the exception for same-shared peripheral ACLs with round-up and round-down. Consider the two peripheral ACLs that have the SHARED flag set. The first is defined to cover [0..0x1004) with round-down and the second with [0..0x0ffc) with round-up. After rounding they will converge to [0..0x1000).
Contributor guide
Research direction
The issue names no files or tests; start by locating the v7M MPU peripheral-ACL validation entry point. Define how rounded regions, identical SHARED regions, static background regions, and implicit stack/context ACLs participate in the disjointness check, then verify that overlapping non-exempt peripheral ACL pairs are rejected.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- c
- Domain
- embedded-iot, operating-systems, security
- Issue type
- Bug
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100