CRIS v10: Fix bug where error returns didn't restore irqs in mm/fault.c
Jesper Nilsson [Mon, 21 Jan 2008 10:14:59 +0000 (11:14 +0100)]
Don't return when we're inside local_irq_disable(), use goto exit instead.
Also, cleanup some whitespace errors.

arch/cris/arch-v10/mm/fault.c

index fe26150..65504fd 100644 (file)
@@ -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>
@@ -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);
@@ -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);
 }