ArmPkg/ArmMmuLib: Implement EFI_MEMORY_RP using access flag
Implement support for read-protected memory by wiring it up to the access flag in the page table descriptor. The resulting mapping is implicitly non-writable and non-executable as well, but this is good enough for implementing this attribute, as we never rely on write or execute permissions without read permissions. Signed-off-by: Ard Biesheuvel <ardb@kernel.org> Reviewed-by: Leif Lindholm <quic_llindhol@quicinc.com>
This commit is contained in:
committed by
mergify[bot]
parent
041c7a31c2
commit
6b821be140
@@ -64,6 +64,10 @@ PageAttributeToGcdAttribute (
|
||||
}
|
||||
|
||||
// Determine protection attributes
|
||||
if ((PageAttributes & TT_AF) == 0) {
|
||||
GcdAttributes |= EFI_MEMORY_RP;
|
||||
}
|
||||
|
||||
if (((PageAttributes & TT_AP_MASK) == TT_AP_NO_RO) ||
|
||||
((PageAttributes & TT_AP_MASK) == TT_AP_RO_RO))
|
||||
{
|
||||
@@ -301,7 +305,9 @@ EfiAttributeToArmAttribute (
|
||||
}
|
||||
|
||||
// Set the access flag to match the block attributes
|
||||
ArmAttributes |= TT_AF;
|
||||
if ((EfiAttributes & EFI_MEMORY_RP) == 0) {
|
||||
ArmAttributes |= TT_AF;
|
||||
}
|
||||
|
||||
// Determine protection attributes
|
||||
if ((EfiAttributes & EFI_MEMORY_RO) != 0) {
|
||||
|
Reference in New Issue
Block a user