Commit 2d8b22de authored by John David Anglin's avatar John David Anglin Committed by Helge Deller

parisc: optimize variable initialization in do_page_fault

The attached change defers the initialization of the variables tsk, mm
and flags until they are needed. As a result, the code won't crash if a
kernel probe is done with a corrupt context and the code will be better
optimized.
Signed-off-by: default avatarJohn David Anglin  <dave.anglin@bell.net>
Signed-off-by: default avatarHelge Deller <deller@gmx.de>
parent 59b33f14
...@@ -171,20 +171,25 @@ void do_page_fault(struct pt_regs *regs, unsigned long code, ...@@ -171,20 +171,25 @@ void do_page_fault(struct pt_regs *regs, unsigned long code,
unsigned long address) unsigned long address)
{ {
struct vm_area_struct *vma, *prev_vma; struct vm_area_struct *vma, *prev_vma;
struct task_struct *tsk = current; struct task_struct *tsk;
struct mm_struct *mm = tsk->mm; struct mm_struct *mm;
unsigned long acc_type; unsigned long acc_type;
int fault; int fault;
unsigned int flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE; unsigned int flags;
if (in_atomic() || !mm) if (in_atomic())
goto no_context; goto no_context;
tsk = current;
mm = tsk->mm;
if (!mm)
goto no_context;
flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE;
if (user_mode(regs)) if (user_mode(regs))
flags |= FAULT_FLAG_USER; flags |= FAULT_FLAG_USER;
acc_type = parisc_acctyp(code, regs->iir); acc_type = parisc_acctyp(code, regs->iir);
if (acc_type & VM_WRITE) if (acc_type & VM_WRITE)
flags |= FAULT_FLAG_WRITE; flags |= FAULT_FLAG_WRITE;
retry: retry:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment