lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Thu, 7 Aug 2014 17:18:44 -0500
From:	Rob Herring <robh@...nel.org>
To:	Kees Cook <keescook@...omium.org>
Cc:	"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
	Liu hua <sdu.liu@...wei.com>, Mark Salter <msalter@...hat.com>,
	Rabin Vincent <rabin@....in>,
	Nikolay Borisov <Nikolay.Borisov@....com>,
	Nicolas Pitre <nicolas.pitre@...aro.org>,
	Leif Lindholm <leif.lindholm@...aro.org>,
	Tomasz Figa <t.figa@...sung.com>,
	Doug Anderson <dianders@...gle.com>,
	Jason Wessel <jason.wessel@...driver.com>,
	Will Deacon <will.deacon@....com>,
	Laura Abbott <lauraa@...eaurora.org>,
	Catalin Marinas <catalin.marinas@....com>,
	Russell King - ARM Linux <linux@....linux.org.uk>,
	"linux-arm-kernel@...ts.infradead.org" 
	<linux-arm-kernel@...ts.infradead.org>
Subject: Re: [PATCH 3/8] arm: mm: reduce fixmap kmap from 32 to 16 CPUS

On Thu, Aug 7, 2014 at 10:01 AM, Kees Cook <keescook@...omium.org> wrote:
> More room is needed in the fixmap range for non-kmap fixmap entries. This
> reduces the kmap range from 32 to 16 CPUs.

Do you want this merged or just doing this to get the rest of your
series working? I'll post my patch for making the fixmap region 3MB
(it adds back the first 1MB of the top pmd).

> Additionally, add PTE entry for
> fixmap regardless of CONFIG_HIGHMEM.

"Additionally" is a good flag for this patch should be split-up. It
seems like we would want to apply this part to stable.

Rob

>
> Signed-off-by: Kees Cook <keescook@...omium.org>
> ---
>  arch/arm/include/asm/fixmap.h | 12 ++++++++++--
>  arch/arm/mm/highmem.c         |  2 --
>  arch/arm/mm/mm.h              |  3 +++
>  arch/arm/mm/mmu.c             |  5 ++++-
>  4 files changed, 17 insertions(+), 5 deletions(-)
>
> diff --git a/arch/arm/include/asm/fixmap.h b/arch/arm/include/asm/fixmap.h
> index 8ee7cb4f62ca..3ed08232be55 100644
> --- a/arch/arm/include/asm/fixmap.h
> +++ b/arch/arm/include/asm/fixmap.h
> @@ -1,16 +1,24 @@
>  #ifndef _ASM_FIXMAP_H
>  #define _ASM_FIXMAP_H
>
> +/*
> + * The fixmap uses 2MB. The KMAP fixmap needs 64k per CPU, so make room for
> + * 16 CPUs (taking 1MB) and leave the rest for additional fixmap areas.
> + */
>  #define FIXADDR_START          0xffc00000UL
>  #define FIXADDR_END            0xffe00000UL
>  #define FIXADDR_TOP            (FIXADDR_END - PAGE_SIZE)
>  #define FIXADDR_SIZE           (FIXADDR_END - FIXADDR_START)
>
> -#define FIX_KMAP_NR_PTES       (FIXADDR_SIZE >> PAGE_SHIFT)
> +/* 16 PTEs per CPU (64k of 4k pages). */
> +#define FIX_KMAP_NR_PTES       16
> +#define FIX_KMAP_NR_CPUS       16
>
>  enum fixed_addresses {
> +       /* Support 16 CPUs for kmap as the first region of fixmap entries. */
>         FIX_KMAP_BEGIN,
> -       FIX_KMAP_END = FIX_KMAP_NR_PTES - 1,
> +       FIX_KMAP_END = (FIX_KMAP_NR_PTES * FIX_KMAP_NR_CPUS) - 1,
> +
>         __end_of_fixed_addresses
>  };
>
> diff --git a/arch/arm/mm/highmem.c b/arch/arm/mm/highmem.c
> index a1241ee8425e..adf264fb700b 100644
> --- a/arch/arm/mm/highmem.c
> +++ b/arch/arm/mm/highmem.c
> @@ -18,8 +18,6 @@
>  #include <asm/tlbflush.h>
>  #include "mm.h"
>
> -pte_t *fixmap_page_table;
> -
>  static inline void set_fixmap_pte(int idx, pte_t pte)
>  {
>         unsigned long vaddr = __fix_to_virt(idx);
> diff --git a/arch/arm/mm/mm.h b/arch/arm/mm/mm.h
> index ce727d47275c..c8b5b2d05b55 100644
> --- a/arch/arm/mm/mm.h
> +++ b/arch/arm/mm/mm.h
> @@ -7,6 +7,9 @@
>  /* the upper-most page table pointer */
>  extern pmd_t *top_pmd;
>
> +/* The fixmap PTE. */
> +extern pte_t *fixmap_page_table;
> +
>  /*
>   * 0xffff8000 to 0xffffffff is reserved for any ARM architecture
>   * specific hacks for copying pages efficiently, while 0xffff4000
> diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c
> index e881ed817a8b..a7a756603775 100644
> --- a/arch/arm/mm/mmu.c
> +++ b/arch/arm/mm/mmu.c
> @@ -53,6 +53,9 @@ EXPORT_SYMBOL(empty_zero_page);
>   */
>  pmd_t *top_pmd;
>
> +/* The fixmap PTE. */
> +pte_t *fixmap_page_table;
> +
>  #define CPOLICY_UNCACHED       0
>  #define CPOLICY_BUFFERED       1
>  #define CPOLICY_WRITETHROUGH   2
> @@ -1342,10 +1345,10 @@ static void __init kmap_init(void)
>  #ifdef CONFIG_HIGHMEM
>         pkmap_page_table = early_pte_alloc(pmd_off_k(PKMAP_BASE),
>                 PKMAP_BASE, _PAGE_KERNEL_TABLE);
> +#endif
>
>         fixmap_page_table = early_pte_alloc(pmd_off_k(FIXADDR_START),
>                 FIXADDR_START, _PAGE_KERNEL_TABLE);
> -#endif
>  }
>
>  static void __init map_lowmem(void)
> --
> 1.9.1
>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists