lkml.org 
[lkml]   [2020]   [Oct]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH v6 3/9] arm64, kfence: enable KFENCE for ARM64
    On Thu, Oct 29, 2020 at 02:16:43PM +0100, Marco Elver wrote:
    > Add architecture specific implementation details for KFENCE and enable
    > KFENCE for the arm64 architecture. In particular, this implements the
    > required interface in <asm/kfence.h>.
    >
    > KFENCE requires that attributes for pages from its memory pool can
    > individually be set. Therefore, force the entire linear map to be mapped
    > at page granularity. Doing so may result in extra memory allocated for
    > page tables in case rodata=full is not set; however, currently
    > CONFIG_RODATA_FULL_DEFAULT_ENABLED=y is the default, and the common case
    > is therefore not affected by this change.
    >
    > Reviewed-by: Dmitry Vyukov <dvyukov@google.com>
    > Co-developed-by: Alexander Potapenko <glider@google.com>
    > Signed-off-by: Alexander Potapenko <glider@google.com>
    > Signed-off-by: Marco Elver <elver@google.com>
    > ---
    > v5:
    > * Move generic page allocation code to core.c [suggested by Jann Horn].
    > * Remove comment about HAVE_ARCH_KFENCE_STATIC_POOL, since we no longer
    > support static pools.
    > * Force page granularity for the linear map [suggested by Mark Rutland].
    > ---
    > arch/arm64/Kconfig | 1 +
    > arch/arm64/include/asm/kfence.h | 19 +++++++++++++++++++
    > arch/arm64/mm/fault.c | 4 ++++
    > arch/arm64/mm/mmu.c | 7 ++++++-
    > 4 files changed, 30 insertions(+), 1 deletion(-)
    > create mode 100644 arch/arm64/include/asm/kfence.h
    >
    > diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
    > index f858c352f72a..2f8b32dddd8b 100644
    > --- a/arch/arm64/Kconfig
    > +++ b/arch/arm64/Kconfig
    > @@ -135,6 +135,7 @@ config ARM64
    > select HAVE_ARCH_JUMP_LABEL_RELATIVE
    > select HAVE_ARCH_KASAN if !(ARM64_16K_PAGES && ARM64_VA_BITS_48)
    > select HAVE_ARCH_KASAN_SW_TAGS if HAVE_ARCH_KASAN
    > + select HAVE_ARCH_KFENCE if (!ARM64_16K_PAGES && !ARM64_64K_PAGES)

    Why does this depend on the page size?

    If this is functional, but has a larger overhead on 16K or 64K, I'd
    suggest removing the dependency, and just updating the Kconfig help text
    to explain that.

    Otherwise, this patch looks fine to me.

    Thanks,
    Mark.

    \
     
     \ /
      Last update: 2020-10-30 16:48    [W:4.090 / U:0.080 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site