[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: Russell King <rmk+kernel@arm.linux.org.uk>
This commit is contained in:
Родитель
80878d6c4a
Коммит
e5beac371a
|
@ -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.
|
||||
*/
|
||||
do_bad_area(current, current->mm, addr, fsr, regs);
|
||||
do_bad_area(addr, fsr, regs);
|
||||
return 0;
|
||||
|
||||
swp:
|
||||
|
|
|
@ -131,10 +131,11 @@ __do_user_fault(struct task_struct *tsk, unsigned long addr,
|
|||
force_sig_info(sig, &si, tsk);
|
||||
}
|
||||
|
||||
void
|
||||
do_bad_area(struct task_struct *tsk, struct mm_struct *mm, unsigned long addr,
|
||||
unsigned int fsr, struct pt_regs *regs)
|
||||
void do_bad_area(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
|
||||
* have no context to handle this fault with.
|
||||
|
@ -319,7 +320,6 @@ static int
|
|||
do_translation_fault(unsigned long addr, unsigned int fsr,
|
||||
struct pt_regs *regs)
|
||||
{
|
||||
struct task_struct *tsk;
|
||||
unsigned int index;
|
||||
pgd_t *pgd, *pgd_k;
|
||||
pmd_t *pmd, *pmd_k;
|
||||
|
@ -351,9 +351,7 @@ do_translation_fault(unsigned long addr, unsigned int fsr,
|
|||
return 0;
|
||||
|
||||
bad_area:
|
||||
tsk = current;
|
||||
|
||||
do_bad_area(tsk, tsk->active_mm, addr, fsr, regs);
|
||||
do_bad_area(addr, fsr, regs);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -364,8 +362,7 @@ bad_area:
|
|||
static int
|
||||
do_sect_fault(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
|
||||
{
|
||||
struct task_struct *tsk = current;
|
||||
do_bad_area(tsk, tsk->active_mm, addr, fsr, regs);
|
||||
do_bad_area(addr, fsr, regs);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
void do_bad_area(struct task_struct *tsk, struct mm_struct *mm,
|
||||
unsigned long addr, unsigned int fsr, struct pt_regs *regs);
|
||||
|
||||
void show_pte(struct mm_struct *mm, unsigned long addr);
|
||||
void do_bad_area(unsigned long addr, unsigned int fsr, struct pt_regs *regs);
|
||||
|
||||
unsigned long search_exception_table(unsigned long addr);
|
||||
|
|
Загрузка…
Ссылка в новой задаче