aboutsummaryrefslogtreecommitdiffstats
path: root/arch/unicore32/mm/fault.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/unicore32/mm/fault.c')
-rw-r--r--arch/unicore32/mm/fault.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/arch/unicore32/mm/fault.c b/arch/unicore32/mm/fault.c
index 8ed3c4509d84..0dc922dba915 100644
--- a/arch/unicore32/mm/fault.c
+++ b/arch/unicore32/mm/fault.c
@@ -209,8 +209,7 @@ static int do_pf(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
209 struct task_struct *tsk; 209 struct task_struct *tsk;
210 struct mm_struct *mm; 210 struct mm_struct *mm;
211 int fault, sig, code; 211 int fault, sig, code;
212 unsigned int flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE | 212 unsigned int flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE;
213 ((!(fsr ^ 0x12)) ? FAULT_FLAG_WRITE : 0);
214 213
215 tsk = current; 214 tsk = current;
216 mm = tsk->mm; 215 mm = tsk->mm;
@@ -222,6 +221,11 @@ static int do_pf(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
222 if (in_atomic() || !mm) 221 if (in_atomic() || !mm)
223 goto no_context; 222 goto no_context;
224 223
224 if (user_mode(regs))
225 flags |= FAULT_FLAG_USER;
226 if (!(fsr ^ 0x12))
227 flags |= FAULT_FLAG_WRITE;
228
225 /* 229 /*
226 * As per x86, we may deadlock here. However, since the kernel only 230 * As per x86, we may deadlock here. However, since the kernel only
227 * validly references user space from well defined areas of the code, 231 * validly references user space from well defined areas of the code,