]> pilppa.com Git - linux-2.6-omap-h63xx.git/commitdiff
CRIS v10: Fix bug where error returns didn't restore irqs in mm/fault.c
authorJesper Nilsson <jesper.nilsson@axis.com>
Mon, 21 Jan 2008 10:14:59 +0000 (11:14 +0100)
committerJesper Nilsson <jesper.nilsson@axis.com>
Fri, 8 Feb 2008 10:06:31 +0000 (11:06 +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 fe2615022b9741ca2473300f2fa1d66ac494ec87..65504fd809285d11d560634f12ba47c27dc809e2 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);
 }