arm64: mm: avoid writable executable mappings in kexec/hibernate code
authorArd Biesheuvel <ardb@kernel.org>
Fri, 29 Apr 2022 13:13:47 +0000 (15:13 +0200)
committerCatalin Marinas <catalin.marinas@arm.com>
Tue, 17 May 2022 08:32:45 +0000 (09:32 +0100)
The temporary mappings of the low-level kexec and hibernate helpers are
created with both writable and executable attributes, which is not
necessary here, and generally best avoided. So use read-only, executable
attributes instead.

Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Acked-by: Mark Rutland <mark.rutland@arm.com>
Link: https://lore.kernel.org/r/20220429131347.3621090-3-ardb@kernel.org
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
arch/arm64/mm/trans_pgd.c

index d7da8ca..4ea2eef 100644 (file)
@@ -238,7 +238,7 @@ int trans_pgd_idmap_page(struct trans_pgd_info *info, phys_addr_t *trans_ttbr0,
        int this_level, index, level_lsb, level_msb;
 
        dst_addr &= PAGE_MASK;
-       prev_level_entry = pte_val(pfn_pte(pfn, PAGE_KERNEL_EXEC));
+       prev_level_entry = pte_val(pfn_pte(pfn, PAGE_KERNEL_ROX));
 
        for (this_level = 3; this_level >= 0; this_level--) {
                levels[this_level] = trans_alloc(info);