Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e5beac37 authored by Russell King's avatar Russell King Committed by Russell King
Browse files

[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: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
parent 80878d6c
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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:
+6 −9
Original line number Diff line number Diff line
@@ -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 @@ do_translation_fault(unsigned long addr, unsigned int fsr,
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 −4
Original line number Diff line number Diff line
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);