Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 64119
b: refs/heads/master
c: e8c59c0
h: refs/heads/master
i:
  64117: 4a68feb
  64115: c1eb981
  64111: 2cb46ea
v: v3
  • Loading branch information
Andrew Burgess authored and Tony Luck committed Aug 16, 2007
1 parent e17dbf1 commit bad16b3
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 4 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 182fdd225de8fc3b1b721ae944fc41146a0bd812
refs/heads/master: e8c59c0cf9c91dccfb6367c306d753500d5a0150
14 changes: 11 additions & 3 deletions trunk/arch/ia64/mm/fault.c
Original file line number Diff line number Diff line change
Expand Up @@ -112,11 +112,17 @@ ia64_do_page_fault (unsigned long address, unsigned long isr, struct pt_regs *re
down_read(&mm->mmap_sem);

vma = find_vma_prev(mm, address, &prev_vma);
if (!vma)
if (!vma && !prev_vma )
goto bad_area;

/* find_vma_prev() returns vma such that address < vma->vm_end or NULL */
if (address < vma->vm_start)
/*
* find_vma_prev() returns vma such that address < vma->vm_end or NULL
*
* May find no vma, but could be that the last vm area is the
* register backing store that needs to expand upwards, in
* this case vma will be null, but prev_vma will ne non-null
*/
if (( !vma && prev_vma ) || (address < vma->vm_start) )
goto check_expansion;

good_area:
Expand Down Expand Up @@ -172,6 +178,8 @@ ia64_do_page_fault (unsigned long address, unsigned long isr, struct pt_regs *re

check_expansion:
if (!(prev_vma && (prev_vma->vm_flags & VM_GROWSUP) && (address == prev_vma->vm_end))) {
if (!vma)
goto bad_area;
if (!(vma->vm_flags & VM_GROWSDOWN))
goto bad_area;
if (REGION_NUMBER(address) != REGION_NUMBER(vma->vm_start)
Expand Down

0 comments on commit bad16b3

Please sign in to comment.