diff options
Diffstat (limited to 'arch/sparc64/mm/fault.c')
-rw-r--r-- | arch/sparc64/mm/fault.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/arch/sparc64/mm/fault.c b/arch/sparc64/mm/fault.c index b97bd054aad3..63b6cc0cd5d5 100644 --- a/arch/sparc64/mm/fault.c +++ b/arch/sparc64/mm/fault.c | |||
@@ -29,6 +29,7 @@ | |||
29 | #include <asm/lsu.h> | 29 | #include <asm/lsu.h> |
30 | #include <asm/sections.h> | 30 | #include <asm/sections.h> |
31 | #include <asm/kdebug.h> | 31 | #include <asm/kdebug.h> |
32 | #include <asm/mmu_context.h> | ||
32 | 33 | ||
33 | /* | 34 | /* |
34 | * To debug kernel to catch accesses to certain virtual/physical addresses. | 35 | * To debug kernel to catch accesses to certain virtual/physical addresses. |
@@ -258,7 +259,7 @@ asmlinkage void __kprobes do_sparc64_fault(struct pt_regs *regs) | |||
258 | struct vm_area_struct *vma; | 259 | struct vm_area_struct *vma; |
259 | unsigned int insn = 0; | 260 | unsigned int insn = 0; |
260 | int si_code, fault_code; | 261 | int si_code, fault_code; |
261 | unsigned long address; | 262 | unsigned long address, mm_rss; |
262 | 263 | ||
263 | fault_code = get_thread_fault_code(); | 264 | fault_code = get_thread_fault_code(); |
264 | 265 | ||
@@ -407,6 +408,11 @@ good_area: | |||
407 | } | 408 | } |
408 | 409 | ||
409 | up_read(&mm->mmap_sem); | 410 | up_read(&mm->mmap_sem); |
411 | |||
412 | mm_rss = get_mm_rss(mm); | ||
413 | if (unlikely(mm_rss >= mm->context.tsb_rss_limit)) | ||
414 | tsb_grow(mm, mm_rss); | ||
415 | |||
410 | return; | 416 | return; |
411 | 417 | ||
412 | /* | 418 | /* |