diff options
author | Johannes Weiner <hannes@cmpxchg.org> | 2013-09-12 15:13:38 -0700 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2014-11-21 09:22:55 -0800 |
commit | 086c6cc5377d0908667e8f7082633aebf45cf95f (patch) | |
tree | d1a769df965db24921a19507d3231e84e79a3060 /arch/mips/mm | |
parent | 20c92c01bfe0d5046f16853c07e2a24ea463cdf2 (diff) | |
download | lwn-086c6cc5377d0908667e8f7082633aebf45cf95f.tar.gz lwn-086c6cc5377d0908667e8f7082633aebf45cf95f.zip |
arch: mm: do not invoke OOM killer on kernel fault OOM
commit 871341023c771ad233620b7a1fb3d9c7031c4e5c upstream.
Kernel faults are expected to handle OOM conditions gracefully (gup,
uaccess etc.), so they should never invoke the OOM killer. Reserve this
for faults triggered in user context when it is the only option.
Most architectures already do this, fix up the remaining few.
Signed-off-by: Johannes Weiner <hannes@cmpxchg.org>
Reviewed-by: Michal Hocko <mhocko@suse.cz>
Acked-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Cc: David Rientjes <rientjes@google.com>
Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: azurIt <azurit@pobox.sk>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'arch/mips/mm')
-rw-r--r-- | arch/mips/mm/fault.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/arch/mips/mm/fault.c b/arch/mips/mm/fault.c index 0fead53d1c26..da47e9b7f425 100644 --- a/arch/mips/mm/fault.c +++ b/arch/mips/mm/fault.c @@ -240,6 +240,8 @@ out_of_memory: * (which will retry the fault, or kill us if we got oom-killed). */ up_read(&mm->mmap_sem); + if (!user_mode(regs)) + goto no_context; pagefault_out_of_memory(); return; |