lkml.org 
[lkml]   [2018]   [Jan]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 29/36] x86: Implement thread_struct whitelist for hardened usercopy
    Date
    This whitelists the FPU register state portion of the thread_struct for
    copying to userspace, instead of the default entire struct.

    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: x86@kernel.org
    Cc: Borislav Petkov <bp@suse.de>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Mathias Krause <minipli@googlemail.com>
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Acked-by: Rik van Riel <riel@redhat.com>
    ---
    arch/x86/Kconfig | 1 +
    arch/x86/include/asm/processor.h | 8 ++++++++
    2 files changed, 9 insertions(+)

    diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
    index 8eed3f94bfc7..9ac4ac1a856b 100644
    --- a/arch/x86/Kconfig
    +++ b/arch/x86/Kconfig
    @@ -116,6 +116,7 @@ config X86
    select HAVE_ARCH_MMAP_RND_COMPAT_BITS if MMU && COMPAT
    select HAVE_ARCH_COMPAT_MMAP_BASES if MMU && COMPAT
    select HAVE_ARCH_SECCOMP_FILTER
    + select HAVE_ARCH_THREAD_STRUCT_WHITELIST
    select HAVE_ARCH_TRACEHOOK
    select HAVE_ARCH_TRANSPARENT_HUGEPAGE
    select HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD if X86_64
    diff --git a/arch/x86/include/asm/processor.h b/arch/x86/include/asm/processor.h
    index cc16fa882e3e..2b037b7fe0eb 100644
    --- a/arch/x86/include/asm/processor.h
    +++ b/arch/x86/include/asm/processor.h
    @@ -492,6 +492,14 @@ struct thread_struct {
    */
    };

    +/* Whitelist the FPU state from the task_struct for hardened usercopy. */
    +static inline void arch_thread_struct_whitelist(unsigned long *offset,
    + unsigned long *size)
    +{
    + *offset = offsetof(struct thread_struct, fpu.state);
    + *size = fpu_kernel_xstate_size;
    +}
    +
    /*
    * Thread-synchronous status.
    *
    --
    2.7.4
    \
     
     \ /
      Last update: 2018-01-14 23:20    [W:4.130 / U:0.116 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site