aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm64/mm
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2013-05-08 18:15:27 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2013-05-08 18:15:27 -0400
commit3d15b798eafd3b6b3cc25f20747008ab9401a57f (patch)
tree9cc140b174197048ae3f4282e09b50d0a43d3ae6 /arch/arm64/mm
parent942d33da999b86821c9aee9615fcb81207ee04c7 (diff)
parent420c158dcf96ee3a5758c9bf1586b163584c75c7 (diff)
Merge tag 'arm64-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/cmarinas/linux-aarch64
Pull arm64 update from Catalin Marinas: - Since drivers/irqchip/irq-gic.c no longer has dependencies on arm32 specifics (the 'gic' branch merged), it can be enabled on arm64. - Enable arm64 support for poweroff/restart (for code under drivers/power/reset/). - Fixes (dts file, exception handling, bitops) * tag 'arm64-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/cmarinas/linux-aarch64: arm64: Treat the bitops index argument as an 'int' arm64: Ignore the 'write' ESR flag on cache maintenance faults arm64: dts: fix #address-cells for foundation-v8 arm64: vexpress: Add support for poweroff/restart arm64: Enable support for the ARM GIC interrupt controller
Diffstat (limited to 'arch/arm64/mm')
-rw-r--r--arch/arm64/mm/fault.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/arch/arm64/mm/fault.c b/arch/arm64/mm/fault.c
index 52638171d6fd..98af6e760cce 100644
--- a/arch/arm64/mm/fault.c
+++ b/arch/arm64/mm/fault.c
@@ -148,6 +148,7 @@ void do_bad_area(unsigned long addr, unsigned int esr, struct pt_regs *regs)
148#define VM_FAULT_BADACCESS 0x020000 148#define VM_FAULT_BADACCESS 0x020000
149 149
150#define ESR_WRITE (1 << 6) 150#define ESR_WRITE (1 << 6)
151#define ESR_CM (1 << 8)
151#define ESR_LNX_EXEC (1 << 24) 152#define ESR_LNX_EXEC (1 << 24)
152 153
153/* 154/*
@@ -206,7 +207,7 @@ static int __kprobes do_page_fault(unsigned long addr, unsigned int esr,
206 struct task_struct *tsk; 207 struct task_struct *tsk;
207 struct mm_struct *mm; 208 struct mm_struct *mm;
208 int fault, sig, code; 209 int fault, sig, code;
209 int write = esr & ESR_WRITE; 210 bool write = (esr & ESR_WRITE) && !(esr & ESR_CM);
210 unsigned int flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE | 211 unsigned int flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE |
211 (write ? FAULT_FLAG_WRITE : 0); 212 (write ? FAULT_FLAG_WRITE : 0);
212 213