提交 e5beac37 编写于 作者: R Russell King 提交者: Russell King

[ARM] do_bad_area() always takes current and current->active_mm

Since do_bad_area() always takes the currently active task and
(supposed to) take the currently active MM, there's no point passing
them to this function.  Instead, obtain references to them inside
do_bad_area().
Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
上级 80878d6c
...@@ -735,7 +735,7 @@ do_alignment(unsigned long addr, unsigned int fsr, struct pt_regs *regs) ...@@ -735,7 +735,7 @@ do_alignment(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
/* /*
* We got a fault - fix it up, or die. * We got a fault - fix it up, or die.
*/ */
do_bad_area(current, current->mm, addr, fsr, regs); do_bad_area(addr, fsr, regs);
return 0; return 0;
swp: swp:
......
...@@ -131,10 +131,11 @@ __do_user_fault(struct task_struct *tsk, unsigned long addr, ...@@ -131,10 +131,11 @@ __do_user_fault(struct task_struct *tsk, unsigned long addr,
force_sig_info(sig, &si, tsk); force_sig_info(sig, &si, tsk);
} }
void void do_bad_area(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
do_bad_area(struct task_struct *tsk, struct mm_struct *mm, unsigned long addr,
unsigned int fsr, struct pt_regs *regs)
{ {
struct task_struct *tsk = current;
struct mm_struct *mm = tsk->active_mm;
/* /*
* If we are in kernel mode at this point, we * If we are in kernel mode at this point, we
* have no context to handle this fault with. * have no context to handle this fault with.
...@@ -319,7 +320,6 @@ static int ...@@ -319,7 +320,6 @@ static int
do_translation_fault(unsigned long addr, unsigned int fsr, do_translation_fault(unsigned long addr, unsigned int fsr,
struct pt_regs *regs) struct pt_regs *regs)
{ {
struct task_struct *tsk;
unsigned int index; unsigned int index;
pgd_t *pgd, *pgd_k; pgd_t *pgd, *pgd_k;
pmd_t *pmd, *pmd_k; pmd_t *pmd, *pmd_k;
...@@ -351,9 +351,7 @@ do_translation_fault(unsigned long addr, unsigned int fsr, ...@@ -351,9 +351,7 @@ do_translation_fault(unsigned long addr, unsigned int fsr,
return 0; return 0;
bad_area: bad_area:
tsk = current; do_bad_area(addr, fsr, regs);
do_bad_area(tsk, tsk->active_mm, addr, fsr, regs);
return 0; return 0;
} }
...@@ -364,8 +362,7 @@ do_translation_fault(unsigned long addr, unsigned int fsr, ...@@ -364,8 +362,7 @@ do_translation_fault(unsigned long addr, unsigned int fsr,
static int static int
do_sect_fault(unsigned long addr, unsigned int fsr, struct pt_regs *regs) do_sect_fault(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
{ {
struct task_struct *tsk = current; do_bad_area(addr, fsr, regs);
do_bad_area(tsk, tsk->active_mm, addr, fsr, regs);
return 0; return 0;
} }
......
void do_bad_area(struct task_struct *tsk, struct mm_struct *mm, void do_bad_area(unsigned long addr, unsigned int fsr, struct pt_regs *regs);
unsigned long addr, unsigned int fsr, struct pt_regs *regs);
void show_pte(struct mm_struct *mm, unsigned long addr);
unsigned long search_exception_table(unsigned long addr); unsigned long search_exception_table(unsigned long addr);
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册