2017-12-08 11:13:31

by Jinbum Park

[permalink] [raw]
Subject: [kernel-hardening][PATCH] arm: mm: idmap: Mark variables as ro_after_init

idmap_pgd, arch_phys_to_idmap_offset are setup once
while init stage, and never changed after that.
so, it is good candidate for __ro_after_init.

Signed-off-by: Jinbum Park <[email protected]>
---
arch/arm/mm/idmap.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/arm/mm/idmap.c b/arch/arm/mm/idmap.c
index 10bfba8..1d1edd0 100644
--- a/arch/arm/mm/idmap.c
+++ b/arch/arm/mm/idmap.c
@@ -16,8 +16,8 @@
* are not supported on any CPU using the idmap tables as its current
* page tables.
*/
-pgd_t *idmap_pgd;
-long long arch_phys_to_idmap_offset;
+pgd_t *idmap_pgd __ro_after_init;
+long long arch_phys_to_idmap_offset __ro_after_init;

#ifdef CONFIG_ARM_LPAE
static void idmap_add_pmd(pud_t *pud, unsigned long addr, unsigned long end,
--
1.9.1


2017-12-08 20:59:25

by Kees Cook

[permalink] [raw]
Subject: Re: [kernel-hardening][PATCH] arm: mm: idmap: Mark variables as ro_after_init

On Fri, Dec 8, 2017 at 3:13 AM, Jinbum Park <[email protected]> wrote:
> idmap_pgd, arch_phys_to_idmap_offset are setup once
> while init stage, and never changed after that.
> so, it is good candidate for __ro_after_init.
>
> Signed-off-by: Jinbum Park <[email protected]>

Reviewed-by: Kees Cook <[email protected]>

Does arm64 have anything like this? Just grepping for similar names,
idmap_t0sz looks like it could actually be const.

-Kees

> ---
> arch/arm/mm/idmap.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/arch/arm/mm/idmap.c b/arch/arm/mm/idmap.c
> index 10bfba8..1d1edd0 100644
> --- a/arch/arm/mm/idmap.c
> +++ b/arch/arm/mm/idmap.c
> @@ -16,8 +16,8 @@
> * are not supported on any CPU using the idmap tables as its current
> * page tables.
> */
> -pgd_t *idmap_pgd;
> -long long arch_phys_to_idmap_offset;
> +pgd_t *idmap_pgd __ro_after_init;
> +long long arch_phys_to_idmap_offset __ro_after_init;
>
> #ifdef CONFIG_ARM_LPAE
> static void idmap_add_pmd(pud_t *pud, unsigned long addr, unsigned long end,
> --
> 1.9.1
>



--
Kees Cook
Pixel Security