[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <82f3bf16-cf3a-9b2d-a7d2-789a4abb0bf2@arm.com>
Date: Wed, 27 Jun 2018 12:07:12 +0100
From: Suzuki K Poulose <Suzuki.Poulose@....com>
To: Jun Yao <yaojun8558363@...il.com>,
linux-arm-kernel@...ts.infradead.org
Cc: catalin.marinas@....com, will.deacon@....com,
ard.biesheuvel@...aro.org, james.morse@....com,
linux-kernel@...r.kernel.org, kernel-hardening@...ts.openwall.com
Subject: Re: [PATCH v2 2/2] arm64/mm: Move {tramp_pg_dir, swapper_pg_dir} to
.rodata section
Hi Jun
On 25/06/18 12:39, Jun Yao wrote:
> When CONFIG_ARM64_VA_BITS_36/CONFIG_ARM64_VA_BITS_39/
> CONFIG_ARM64_VA_BITS_42 are selected, a block-mapping can be
> written to swapper_pg_dir. To defend 'KSMA', we move swapper_pg_dir
> to .rodata section when these configurations are selected. At the
> same time, we update swapper_pg_dir by fixmap.
>
> Signed-off-by: Jun Yao <yaojun8558363@...il.com>
> ---
> arch/arm64/include/asm/fixmap.h | 1 +
> arch/arm64/include/asm/pgalloc.h | 33 ++++++++++++++++++++++++++++++++
> arch/arm64/include/asm/pgtable.h | 5 +++++
> arch/arm64/kernel/head.S | 6 +++---
> arch/arm64/kernel/vmlinux.lds.S | 23 ++++++++++++++++++++++
> arch/arm64/mm/mmu.c | 6 ++++++
> 6 files changed, 71 insertions(+), 3 deletions(-)
>
> diff --git a/arch/arm64/include/asm/fixmap.h b/arch/arm64/include/asm/fixmap.h
> index 62908eeedcdc..881784b43965 100644
> --- a/arch/arm64/include/asm/fixmap.h
> +++ b/arch/arm64/include/asm/fixmap.h
> @@ -83,6 +83,7 @@ enum fixed_addresses {
> FIX_PTE,
> FIX_PMD,
> FIX_PUD,
> + FIX_SWAPPER,
>
> __end_of_fixed_addresses
> };
> diff --git a/arch/arm64/include/asm/pgalloc.h b/arch/arm64/include/asm/pgalloc.h
> index 2e05bcd944c8..62512ad9c310 100644
> --- a/arch/arm64/include/asm/pgalloc.h
> +++ b/arch/arm64/include/asm/pgalloc.h
> @@ -49,6 +49,22 @@ static inline void __pud_populate(pud_t *pudp, phys_addr_t pmdp, pudval_t prot)
>
> static inline void pud_populate(struct mm_struct *mm, pud_t *pudp, pmd_t *pmdp)
> {
> +#ifdef CONFIG_ARM64_VA_BITS_39
Could we please use
#ifdef __PAGETABLE_PUD_FOLDED ^^
> + }
> +#endif
> __pud_populate(pudp, __pa(pmdp), PMD_TYPE_TABLE);
> }
> #else
> @@ -142,6 +158,23 @@ pmd_populate_kernel(struct mm_struct *mm, pmd_t *pmdp, pte_t *ptep)
> /*
> * The pmd must be loaded with the physical address of the PTE table
> */
> +#if defined(CONFIG_ARM64_VA_BITS_42) || \
> + defined(CONFIG_ARM64_VA_BITS_36)
and
#ifdef __PGTABLE_PMD_FOLDED here ^^
> +#if defined(CONFIG_ARM64_VA_BITS_39) || \
> + defined(CONFIG_ARM64_VA_BITS_36) || \
> + defined(CONFIG_ARM64_VA_BITS_42)
and
#ifdef __PGTABLE_PMD_FOLDED ^^ (as it implies
__PGTABLE_PUD_FOLDED )
instead ?
Cheers
Suzuki
Powered by blists - more mailing lists