arm: Implement thread_struct whitelist for hardened usercopy
While ARM32 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: Russell King <linux@armlinux.org.uk> Cc: Ingo Molnar <mingo@kernel.org> Cc: Christian Borntraeger <borntraeger@de.ibm.com> Cc: "Peter Zijlstra (Intel)" <peterz@infradead.org> Cc: linux-arm-kernel@lists.infradead.org Signed-off-by: Kees Cook <keescook@chromium.org>
This commit is contained in:
Родитель
9e8084d3f7
Коммит
08626a6056
|
@ -50,6 +50,7 @@ config ARM
|
|||
select HAVE_ARCH_KGDB if !CPU_ENDIAN_BE32 && MMU
|
||||
select HAVE_ARCH_MMAP_RND_BITS if MMU
|
||||
select HAVE_ARCH_SECCOMP_FILTER if (AEABI && !OABI_COMPAT)
|
||||
select HAVE_ARCH_THREAD_STRUCT_WHITELIST
|
||||
select HAVE_ARCH_TRACEHOOK
|
||||
select HAVE_ARM_SMCCC if CPU_V7
|
||||
select HAVE_EBPF_JIT if !CPU_ENDIAN_BE32
|
||||
|
|
|
@ -45,6 +45,16 @@ struct thread_struct {
|
|||
struct debug_info debug;
|
||||
};
|
||||
|
||||
/*
|
||||
* 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;
|
||||
}
|
||||
|
||||
#define INIT_THREAD { }
|
||||
|
||||
#define start_thread(regs,pc,sp) \
|
||||
|
|
Загрузка…
Ссылка в новой задаче