Skip to content

Commit

Permalink
CRIS v10: Fix bug where error returns didn't restore irqs in mm/fault.c
Browse files Browse the repository at this point in the history
Don't return when we're inside local_irq_disable(), use goto exit instead.
Also, cleanup some whitespace errors.
  • Loading branch information
Jesper Nilsson committed Feb 8, 2008
1 parent 5712e4d commit 40316c1
Showing 1 changed file with 7 additions and 6 deletions.
13 changes: 7 additions & 6 deletions arch/cris/arch-v10/mm/fault.c
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@
* Low level bus fault handler
*
*
* Copyright (C) 2000, 2001 Axis Communications AB
* Copyright (C) 2000-2007 Axis Communications AB
*
* Authors: Bjorn Wesen
*
* Authors: Bjorn Wesen
*
*/

#include <linux/mm.h>
Expand Down Expand Up @@ -60,7 +60,7 @@ handle_mmu_bus_fault(struct pt_regs *regs)
#ifdef DEBUG
page_id = IO_EXTRACT(R_MMU_CAUSE, page_id, cause);
acc = IO_EXTRACT(R_MMU_CAUSE, acc_excp, cause);
inv = IO_EXTRACT(R_MMU_CAUSE, inv_excp, cause);
inv = IO_EXTRACT(R_MMU_CAUSE, inv_excp, cause);
index = IO_EXTRACT(R_TLB_SELECT, index, select);
#endif
miss = IO_EXTRACT(R_MMU_CAUSE, miss_excp, cause);
Expand All @@ -84,12 +84,13 @@ handle_mmu_bus_fault(struct pt_regs *regs)
local_irq_disable();
pmd = (pmd_t *)(pgd + pgd_index(address));
if (pmd_none(*pmd))
return;
goto exit;
pte = *pte_offset_kernel(pmd, address);
if (!pte_present(pte))
return;
goto exit;
*R_TLB_SELECT = select;
*R_TLB_HI = cause;
*R_TLB_LO = pte_val(pte);
exit:
local_irq_restore(flags);
}

0 comments on commit 40316c1

Please sign in to comment.