ARMmbed / ARMmbed/uvisor

v7M MPU does not implement ACL disjointness check

Open
#300 1 comment 0 reactions 0 assignees View on GitHub
issue mirrored
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.