'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>
(cherry picked from commit
|
||
|---|---|---|
| .. | ||
| auxvec.h | ||
| bitsperlong.h | ||
| byteorder.h | ||
| fcntl.h | ||
| hwcap.h | ||
| Kbuild | ||
| kvm.h | ||
| param.h | ||
| perf_regs.h | ||
| posix_types.h | ||
| ptrace.h | ||
| setup.h | ||
| sigcontext.h | ||
| siginfo.h | ||
| signal.h | ||
| stat.h | ||
| statfs.h | ||
| ucontext.h | ||
| unistd.h | ||