mirror of https://gitee.com/openkylin/linux.git
arm64: Implement thread_struct whitelist for hardened usercopy
While ARM64 carries FPU state in the thread structure that is saved and restored during signal handling, it doesn't need to declare a usercopy whitelist, since existing accessors are all either using a bounce buffer (for which whitelisting isn't checking the slab), are statically sized (which will bypass the hardened usercopy check), or both. Cc: Catalin Marinas <catalin.marinas@arm.com> Cc: Will Deacon <will.deacon@arm.com> Cc: Christian Borntraeger <borntraeger@de.ibm.com> Cc: Ingo Molnar <mingo@kernel.org> Cc: James Morse <james.morse@arm.com> Cc: "Peter Zijlstra (Intel)" <peterz@infradead.org> Cc: Dave Martin <Dave.Martin@arm.com> Cc: zijun_hu <zijun_hu@htc.com> Cc: linux-arm-kernel@lists.infradead.org Signed-off-by: Kees Cook <keescook@chromium.org>
This commit is contained in:
parent
f7d83c1cf3
commit
9e8084d3f7
|
@ -90,6 +90,7 @@ config ARM64
|
||||||
select HAVE_ARCH_MMAP_RND_BITS
|
select HAVE_ARCH_MMAP_RND_BITS
|
||||||
select HAVE_ARCH_MMAP_RND_COMPAT_BITS if COMPAT
|
select HAVE_ARCH_MMAP_RND_COMPAT_BITS if COMPAT
|
||||||
select HAVE_ARCH_SECCOMP_FILTER
|
select HAVE_ARCH_SECCOMP_FILTER
|
||||||
|
select HAVE_ARCH_THREAD_STRUCT_WHITELIST
|
||||||
select HAVE_ARCH_TRACEHOOK
|
select HAVE_ARCH_TRACEHOOK
|
||||||
select HAVE_ARCH_TRANSPARENT_HUGEPAGE
|
select HAVE_ARCH_TRANSPARENT_HUGEPAGE
|
||||||
select HAVE_ARCH_VMAP_STACK
|
select HAVE_ARCH_VMAP_STACK
|
||||||
|
|
|
@ -113,6 +113,16 @@ struct thread_struct {
|
||||||
struct debug_info debug; /* debugging */
|
struct debug_info debug; /* debugging */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Everything usercopied to/from thread_struct is statically-sized, so
|
||||||
|
* no hardened usercopy whitelist is needed.
|
||||||
|
*/
|
||||||
|
static inline void arch_thread_struct_whitelist(unsigned long *offset,
|
||||||
|
unsigned long *size)
|
||||||
|
{
|
||||||
|
*offset = *size = 0;
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_COMPAT
|
#ifdef CONFIG_COMPAT
|
||||||
#define task_user_tls(t) \
|
#define task_user_tls(t) \
|
||||||
({ \
|
({ \
|
||||||
|
|
Loading…
Reference in New Issue