Messages in this thread | | | From | Thiago Jung Bauermann <> | Subject | Re: [PATCH v7 13/39] arm64/mm: Map pages for guarded control stack | Date | Mon, 04 Dec 2023 00:01:49 -0300 |
| |
Hello,
Mark Brown <broonie@kernel.org> writes:
> diff --git a/arch/arm64/mm/mmap.c b/arch/arm64/mm/mmap.c > index 645fe60d000f..605d4e6edc1d 100644 > --- a/arch/arm64/mm/mmap.c > +++ b/arch/arm64/mm/mmap.c > @@ -79,9 +79,20 @@ arch_initcall(adjust_protection_map); > > pgprot_t vm_get_page_prot(unsigned long vm_flags) > { > - pteval_t prot = pgprot_val(protection_map[vm_flags & > + pteval_t prot; > + > + /* If this is a GCS then only interpret VM_WRITE. */ > + if (system_supports_gcs() && (vm_flags & VM_SHADOW_STACK)) { > + if (vm_flags & VM_WRITE) > + prot = _PAGE_GCS; > + else > + prot = _PAGE_GCS_RO; > + } else { > + prot = pgprot_val(protection_map[vm_flags & > (VM_READ|VM_WRITE|VM_EXEC|VM_SHARED)]); > + } > > + /* VM_ARM64_BTI on a GCS is rejected in arch_valdiate_flags() */
s/valdiate/validate/
> if (vm_flags & VM_ARM64_BTI) > prot |= PTE_GP;
-- Thiago
| |