aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>2016-10-07 19:59:03 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2016-10-07 21:46:28 -0400
commit38531201c12144cd7d96abfdfe7449c2b01375e8 (patch)
tree0075124f382060b23ce36dbe96d2a9bfc8be8ad9
parent7d2e7a22cf27e7569e6816ccc05dd74248048b30 (diff)
mm, oom: enforce exit_oom_victim on current task
There are no users of exit_oom_victim on !current task anymore so enforce the API to always work on the current. Link: http://lkml.kernel.org/r/1472119394-11342-8-git-send-email-mhocko@kernel.org Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp> Signed-off-by: Michal Hocko <mhocko@suse.com> Cc: Oleg Nesterov <oleg@redhat.com> Cc: David Rientjes <rientjes@google.com> Cc: Vladimir Davydov <vdavydov@parallels.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r--include/linux/oom.h2
-rw-r--r--kernel/exit.c2
-rw-r--r--mm/oom_kill.c5
3 files changed, 4 insertions, 5 deletions
diff --git a/include/linux/oom.h b/include/linux/oom.h
index 0f1b9da108e4..b4e36e92bc87 100644
--- a/include/linux/oom.h
+++ b/include/linux/oom.h
@@ -69,7 +69,7 @@ extern unsigned long oom_badness(struct task_struct *p,
69 69
70extern bool out_of_memory(struct oom_control *oc); 70extern bool out_of_memory(struct oom_control *oc);
71 71
72extern void exit_oom_victim(struct task_struct *tsk); 72extern void exit_oom_victim(void);
73 73
74extern int register_oom_notifier(struct notifier_block *nb); 74extern int register_oom_notifier(struct notifier_block *nb);
75extern int unregister_oom_notifier(struct notifier_block *nb); 75extern int unregister_oom_notifier(struct notifier_block *nb);
diff --git a/kernel/exit.c b/kernel/exit.c
index 1e1d913914c0..9d68c45ebbe3 100644
--- a/kernel/exit.c
+++ b/kernel/exit.c
@@ -511,7 +511,7 @@ static void exit_mm(struct task_struct *tsk)
511 mm_update_next_owner(mm); 511 mm_update_next_owner(mm);
512 mmput(mm); 512 mmput(mm);
513 if (test_thread_flag(TIF_MEMDIE)) 513 if (test_thread_flag(TIF_MEMDIE))
514 exit_oom_victim(tsk); 514 exit_oom_victim();
515} 515}
516 516
517static struct task_struct *find_alive_thread(struct task_struct *p) 517static struct task_struct *find_alive_thread(struct task_struct *p)
diff --git a/mm/oom_kill.c b/mm/oom_kill.c
index 895a51fe8e18..3b990544db6d 100644
--- a/mm/oom_kill.c
+++ b/mm/oom_kill.c
@@ -662,10 +662,9 @@ static void mark_oom_victim(struct task_struct *tsk)
662/** 662/**
663 * exit_oom_victim - note the exit of an OOM victim 663 * exit_oom_victim - note the exit of an OOM victim
664 */ 664 */
665void exit_oom_victim(struct task_struct *tsk) 665void exit_oom_victim(void)
666{ 666{
667 if (!test_and_clear_tsk_thread_flag(tsk, TIF_MEMDIE)) 667 clear_thread_flag(TIF_MEMDIE);
668 return;
669 668
670 if (!atomic_dec_return(&oom_victims)) 669 if (!atomic_dec_return(&oom_victims))
671 wake_up_all(&oom_victims_wait); 670 wake_up_all(&oom_victims_wait);