summaryrefslogtreecommitdiff
path: root/arch/arm/mm/abort-ev5tj.S
diff options
context:
space:
mode:
authorRussell King <rmk+kernel@arm.linux.org.uk>2015-08-20 09:32:02 (GMT)
committerRussell King <rmk+kernel@arm.linux.org.uk>2015-08-26 19:27:02 (GMT)
commit2190fed67ba6f3e8129513929f2395843645e928 (patch)
tree45a4db5061c12e2926f7a1c89d56c7bbf47f0e61 /arch/arm/mm/abort-ev5tj.S
parentaa06e5c1f9c2b466712be904cc5b56a813e24cfd (diff)
downloadlinux-2190fed67ba6f3e8129513929f2395843645e928.tar.xz
ARM: entry: provide uaccess assembly macro hooks
Provide hooks into the kernel entry and exit paths to permit control of userspace visibility to the kernel. The intended use is: - on entry to kernel from user, uaccess_disable will be called to disable userspace visibility - on exit from kernel to user, uaccess_enable will be called to enable userspace visibility - on entry from a kernel exception, uaccess_save_and_disable will be called to save the current userspace visibility setting, and disable access - on exit from a kernel exception, uaccess_restore will be called to restore the userspace visibility as it was before the exception occurred. These hooks allows us to keep userspace visibility disabled for the vast majority of the kernel, except for localised regions where we want to explicitly access userspace. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/mm/abort-ev5tj.S')
-rw-r--r--arch/arm/mm/abort-ev5tj.S1
1 files changed, 1 insertions, 0 deletions
diff --git a/arch/arm/mm/abort-ev5tj.S b/arch/arm/mm/abort-ev5tj.S
index 1b80d71..00ab011 100644
--- a/arch/arm/mm/abort-ev5tj.S
+++ b/arch/arm/mm/abort-ev5tj.S
@@ -24,6 +24,7 @@ ENTRY(v5tj_early_abort)
bne do_DataAbort
do_thumb_abort fsr=r1, pc=r4, psr=r5, tmp=r3
ldreq r3, [r4] @ read aborted ARM instruction
+ uaccess_disable ip @ disable userspace access
teq_ldrd tmp=ip, insn=r3 @ insn was LDRD?
beq do_DataAbort @ yes
tst r3, #1 << 20 @ L = 0 -> write