arm64: kernel: Add support for User Access Override
'User Access Override' is a new ARMv8.2 feature which allows the unprivileged load and store instructions to be overridden to behave in the normal way. This patch converts {get,put}_user() and friends to use ldtr*/sttr* instructions - so that they can only access EL0 memory, then enables UAO when fs==KERNEL_DS so that these functions can access kernel memory. This allows user space's read/write permissions to be checked against the page tables, instead of testing addr<USER_DS, then using the kernel's read/write permissions. Signed-off-by:James Morse <james.morse@arm.com> [catalin.marinas@arm.com: move uao_thread_switch() above dsb()] Signed-off-by:
Catalin Marinas <catalin.marinas@arm.com>
Showing
- arch/arm64/Kconfig 21 additions, 0 deletionsarch/arm64/Kconfig
- arch/arm64/include/asm/alternative.h 72 additions, 0 deletionsarch/arm64/include/asm/alternative.h
- arch/arm64/include/asm/cpufeature.h 2 additions, 1 deletionarch/arm64/include/asm/cpufeature.h
- arch/arm64/include/asm/processor.h 1 addition, 0 deletionsarch/arm64/include/asm/processor.h
- arch/arm64/include/asm/sysreg.h 3 additions, 0 deletionsarch/arm64/include/asm/sysreg.h
- arch/arm64/include/asm/thread_info.h 6 additions, 0 deletionsarch/arm64/include/asm/thread_info.h
- arch/arm64/include/asm/uaccess.h 32 additions, 12 deletionsarch/arm64/include/asm/uaccess.h
- arch/arm64/include/uapi/asm/ptrace.h 1 addition, 0 deletionsarch/arm64/include/uapi/asm/ptrace.h
- arch/arm64/kernel/cpufeature.c 11 additions, 0 deletionsarch/arm64/kernel/cpufeature.c
- arch/arm64/kernel/process.c 19 additions, 0 deletionsarch/arm64/kernel/process.c
- arch/arm64/lib/clear_user.S 4 additions, 4 deletionsarch/arm64/lib/clear_user.S
- arch/arm64/lib/copy_from_user.S 4 additions, 4 deletionsarch/arm64/lib/copy_from_user.S
- arch/arm64/lib/copy_in_user.S 8 additions, 8 deletionsarch/arm64/lib/copy_in_user.S
- arch/arm64/lib/copy_to_user.S 4 additions, 4 deletionsarch/arm64/lib/copy_to_user.S
- arch/arm64/mm/fault.c 25 additions, 6 deletionsarch/arm64/mm/fault.c
Loading
Please register or sign in to comment