aboutsummaryrefslogtreecommitdiffstats
path: root/mm
diff options
context:
space:
mode:
Diffstat (limited to 'mm')
-rw-r--r--mm/oom_kill.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/mm/oom_kill.c b/mm/oom_kill.c
index 5a3ba96c8338..10f686969fc4 100644
--- a/mm/oom_kill.c
+++ b/mm/oom_kill.c
@@ -902,13 +902,7 @@ static void oom_kill_process(struct oom_control *oc, const char *message)
902 continue; 902 continue;
903 if (same_thread_group(p, victim)) 903 if (same_thread_group(p, victim))
904 continue; 904 continue;
905 if (unlikely(p->flags & PF_KTHREAD) || is_global_init(p)) { 905 if (is_global_init(p)) {
906 /*
907 * We cannot use oom_reaper for the mm shared by this
908 * process because it wouldn't get killed and so the
909 * memory might be still used. Hide the mm from the oom
910 * killer to guarantee OOM forward progress.
911 */
912 can_oom_reap = false; 906 can_oom_reap = false;
913 set_bit(MMF_OOM_SKIP, &mm->flags); 907 set_bit(MMF_OOM_SKIP, &mm->flags);
914 pr_info("oom killer %d (%s) has mm pinned by %d (%s)\n", 908 pr_info("oom killer %d (%s) has mm pinned by %d (%s)\n",
@@ -916,6 +910,12 @@ static void oom_kill_process(struct oom_control *oc, const char *message)
916 task_pid_nr(p), p->comm); 910 task_pid_nr(p), p->comm);
917 continue; 911 continue;
918 } 912 }
913 /*
914 * No use_mm() user needs to read from the userspace so we are
915 * ok to reap it.
916 */
917 if (unlikely(p->flags & PF_KTHREAD))
918 continue;
919 do_send_sig_info(SIGKILL, SEND_SIG_FORCED, p, true); 919 do_send_sig_info(SIGKILL, SEND_SIG_FORCED, p, true);
920 } 920 }
921 rcu_read_unlock(); 921 rcu_read_unlock();