mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2025-01-27 00:04:47 +08:00
CRIS v10: Fix bug where error returns didn't restore irqs in mm/fault.c
Don't return when we're inside local_irq_disable(), use goto exit instead. Also, cleanup some whitespace errors.
This commit is contained in:
parent
5712e4dfc6
commit
40316c1fad
@ -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);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user