[PATCH] m32r: fix ace_handler to pass full 32-bit address
Don't mask the lower 12-bit of the page fault address. In the current m32r kernel implementation, we use an access exception to detect page faults. This patch fixes ace_handler (access exception handler) for m32r. In order to check userspace address in do_page_fault, we have to pass full 32-bit address to do_page_fault. Signed-off-by: Hirokazu Takata <takata@linux-m32r.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
f894cb5c93
commit
6b8bd3f4b2
2 changed files with 2 additions and 4 deletions
|
@ -596,8 +596,6 @@ ENTRY(ace_handler)
|
|||
beqz r1, inst
|
||||
oprand:
|
||||
ld r2, @(low(MDEVA_offset),r2) ; set address
|
||||
srli r2, #12
|
||||
slli r2, #12
|
||||
srli r1, #1
|
||||
bra 1f
|
||||
inst:
|
||||
|
|
|
@ -173,7 +173,7 @@ asmlinkage void do_page_fault(struct pt_regs *regs, unsigned long error_code,
|
|||
goto good_area;
|
||||
if (!(vma->vm_flags & VM_GROWSDOWN))
|
||||
goto bad_area;
|
||||
#if 0
|
||||
|
||||
if (error_code & ACE_USERMODE) {
|
||||
/*
|
||||
* accessing the stack below "spu" is always a bug.
|
||||
|
@ -184,7 +184,7 @@ asmlinkage void do_page_fault(struct pt_regs *regs, unsigned long error_code,
|
|||
if (address + 4 < regs->spu)
|
||||
goto bad_area;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (expand_stack(vma, address))
|
||||
goto bad_area;
|
||||
/*
|
||||
|
|
Loading…
Reference in a new issue