ArmPkg/ArmMmuLib ARM: handle unmapped sections when updating permissions
The ARM ArmMmuLib code currently does not take into account that setting permissions on a region should take into account that a region may not be mapped yet to begin with. So when updating a section descriptor whose old value is zero, pass in the address explicitly. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>
This commit is contained in:
parent
36a87fec68
commit
aa1097921d
|
@ -695,8 +695,12 @@ UpdateSectionEntries (
|
||||||
} else {
|
} else {
|
||||||
// still a section entry
|
// still a section entry
|
||||||
|
|
||||||
// mask off appropriate fields
|
if (CurrentDescriptor != 0) {
|
||||||
Descriptor = CurrentDescriptor & ~EntryMask;
|
// mask off appropriate fields
|
||||||
|
Descriptor = CurrentDescriptor & ~EntryMask;
|
||||||
|
} else {
|
||||||
|
Descriptor = ((UINTN)FirstLevelIdx + i) << TT_DESCRIPTOR_SECTION_BASE_SHIFT;
|
||||||
|
}
|
||||||
|
|
||||||
// mask in new attributes and/or permissions
|
// mask in new attributes and/or permissions
|
||||||
Descriptor |= EntryValue;
|
Descriptor |= EntryValue;
|
||||||
|
|
Loading…
Reference in New Issue