Commit 3a1dfe6e authored by Ingo Molnar's avatar Ingo Molnar
Browse files

x86/mm: unify init task OOM handling



Linus noticed that the "again:" versus "survive:" OOM logic for
the init task was arbitrarily different.

The 64-bit codepath is the better one, because it correctly re-lookups
the vma after having dropped the ->mmap_sem.
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
Acked-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 891cffbd
......@@ -671,7 +671,8 @@ void __kprobes do_page_fault(struct pt_regs *regs, unsigned long error_code)
goto bad_area_nosemaphore;
again:
/* When running in the kernel we expect faults to occur only to
/*
* When running in the kernel we expect faults to occur only to
* addresses in user space. All other faults represent errors in the
* kernel and should generate an OOPS. Unfortunately, in the case of an
* erroneous fault occurring in a code path which already holds mmap_sem
......@@ -734,9 +735,6 @@ void __kprobes do_page_fault(struct pt_regs *regs, unsigned long error_code)
goto bad_area;
}
#ifdef CONFIG_X86_32
survive:
#endif
/*
* If for any reason at all we couldn't handle the fault,
* make sure we exit gracefully rather than endlessly redo
......@@ -871,12 +869,11 @@ void __kprobes do_page_fault(struct pt_regs *regs, unsigned long error_code)
up_read(&mm->mmap_sem);
if (is_global_init(tsk)) {
yield();
#ifdef CONFIG_X86_32
down_read(&mm->mmap_sem);
goto survive;
#else
/*
* Re-lookup the vma - in theory the vma tree might
* have changed:
*/
goto again;
#endif
}
printk("VM: killing process %s\n", tsk->comm);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment