diff options
Diffstat (limited to 'arch/sh/mm/tlbflush_64.c')
-rw-r--r-- | arch/sh/mm/tlbflush_64.c | 20 |
1 files changed, 4 insertions, 16 deletions
diff --git a/arch/sh/mm/tlbflush_64.c b/arch/sh/mm/tlbflush_64.c index 706da1d3a67..03db41cc126 100644 --- a/arch/sh/mm/tlbflush_64.c +++ b/arch/sh/mm/tlbflush_64.c | |||
@@ -189,7 +189,6 @@ good_area: | |||
189 | * make sure we exit gracefully rather than endlessly redo | 189 | * make sure we exit gracefully rather than endlessly redo |
190 | * the fault. | 190 | * the fault. |
191 | */ | 191 | */ |
192 | survive: | ||
193 | fault = handle_mm_fault(mm, vma, address, writeaccess ? FAULT_FLAG_WRITE : 0); | 192 | fault = handle_mm_fault(mm, vma, address, writeaccess ? FAULT_FLAG_WRITE : 0); |
194 | if (unlikely(fault & VM_FAULT_ERROR)) { | 193 | if (unlikely(fault & VM_FAULT_ERROR)) { |
195 | if (fault & VM_FAULT_OOM) | 194 | if (fault & VM_FAULT_OOM) |
@@ -294,22 +293,11 @@ no_context: | |||
294 | * us unable to handle the page fault gracefully. | 293 | * us unable to handle the page fault gracefully. |
295 | */ | 294 | */ |
296 | out_of_memory: | 295 | out_of_memory: |
297 | if (is_global_init(current)) { | ||
298 | panic("INIT out of memory\n"); | ||
299 | yield(); | ||
300 | goto survive; | ||
301 | } | ||
302 | printk("fault:Out of memory\n"); | ||
303 | up_read(&mm->mmap_sem); | 296 | up_read(&mm->mmap_sem); |
304 | if (is_global_init(current)) { | 297 | if (!user_mode(regs)) |
305 | yield(); | 298 | goto no_context; |
306 | down_read(&mm->mmap_sem); | 299 | pagefault_out_of_memory(); |
307 | goto survive; | 300 | return; |
308 | } | ||
309 | printk("VM: killing process %s\n", tsk->comm); | ||
310 | if (user_mode(regs)) | ||
311 | do_group_exit(SIGKILL); | ||
312 | goto no_context; | ||
313 | 301 | ||
314 | do_sigbus: | 302 | do_sigbus: |
315 | printk("fault:Do sigbus\n"); | 303 | printk("fault:Do sigbus\n"); |