Skip to content

Commit

Permalink
powerpc: Invoke oom-killer from page fault
Browse files Browse the repository at this point in the history
As explained in commit 1c0fe6e, we want to call the architecture independent
oom killer when getting an unexplained OOM from handle_mm_fault, rather than
simply killing current.

Cc: [email protected]
Cc: Benjamin Herrenschmidt <[email protected]>
Cc: [email protected]
Signed-off-by: Nick Piggin <[email protected]>
Signed-off-by: Benjamin Herrenschmidt <[email protected]>
  • Loading branch information
ozbenh committed May 6, 2010
1 parent 91eea67 commit e460c2c
Showing 1 changed file with 4 additions and 10 deletions.
14 changes: 4 additions & 10 deletions arch/powerpc/mm/fault.c
Original file line number Diff line number Diff line change
Expand Up @@ -308,7 +308,6 @@ int __kprobes do_page_fault(struct pt_regs *regs, unsigned long address,
* make sure we exit gracefully rather than endlessly redo
* the fault.
*/
survive:
ret = handle_mm_fault(mm, vma, address, is_write ? FAULT_FLAG_WRITE : 0);
if (unlikely(ret & VM_FAULT_ERROR)) {
if (ret & VM_FAULT_OOM)
Expand Down Expand Up @@ -360,15 +359,10 @@ int __kprobes do_page_fault(struct pt_regs *regs, unsigned long address,
*/
out_of_memory:
up_read(&mm->mmap_sem);
if (is_global_init(current)) {
yield();
down_read(&mm->mmap_sem);
goto survive;
}
printk("VM: killing process %s\n", current->comm);
if (user_mode(regs))
do_group_exit(SIGKILL);
return SIGKILL;
if (!user_mode(regs))
return SIGKILL;
pagefault_out_of_memory();
return 0;

do_sigbus:
up_read(&mm->mmap_sem);
Expand Down

0 comments on commit e460c2c

Please sign in to comment.