diff options
Diffstat (limited to 'arch/sh/mm/fault_32.c')
-rw-r--r-- | arch/sh/mm/fault_32.c | 14 |
1 files changed, 4 insertions, 10 deletions
diff --git a/arch/sh/mm/fault_32.c b/arch/sh/mm/fault_32.c index 8bf79e3b7bdd..d4c34d757f0d 100644 --- a/arch/sh/mm/fault_32.c +++ b/arch/sh/mm/fault_32.c | |||
@@ -200,7 +200,6 @@ good_area: | |||
200 | * make sure we exit gracefully rather than endlessly redo | 200 | * make sure we exit gracefully rather than endlessly redo |
201 | * the fault. | 201 | * the fault. |
202 | */ | 202 | */ |
203 | survive: | ||
204 | fault = handle_mm_fault(mm, vma, address, writeaccess ? FAULT_FLAG_WRITE : 0); | 203 | fault = handle_mm_fault(mm, vma, address, writeaccess ? FAULT_FLAG_WRITE : 0); |
205 | if (unlikely(fault & VM_FAULT_ERROR)) { | 204 | if (unlikely(fault & VM_FAULT_ERROR)) { |
206 | if (fault & VM_FAULT_OOM) | 205 | if (fault & VM_FAULT_OOM) |
@@ -290,15 +289,10 @@ no_context: | |||
290 | */ | 289 | */ |
291 | out_of_memory: | 290 | out_of_memory: |
292 | up_read(&mm->mmap_sem); | 291 | up_read(&mm->mmap_sem); |
293 | if (is_global_init(current)) { | 292 | if (!user_mode(regs)) |
294 | yield(); | 293 | goto no_context; |
295 | down_read(&mm->mmap_sem); | 294 | pagefault_out_of_memory(); |
296 | goto survive; | 295 | return; |
297 | } | ||
298 | printk("VM: killing process %s\n", tsk->comm); | ||
299 | if (user_mode(regs)) | ||
300 | do_group_exit(SIGKILL); | ||
301 | goto no_context; | ||
302 | 296 | ||
303 | do_sigbus: | 297 | do_sigbus: |
304 | up_read(&mm->mmap_sem); | 298 | up_read(&mm->mmap_sem); |