diff options
author | Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp> | 2016-10-07 19:59:03 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2016-10-07 21:46:28 -0400 |
commit | 38531201c12144cd7d96abfdfe7449c2b01375e8 (patch) | |
tree | 0075124f382060b23ce36dbe96d2a9bfc8be8ad9 | |
parent | 7d2e7a22cf27e7569e6816ccc05dd74248048b30 (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.h | 2 | ||||
-rw-r--r-- | kernel/exit.c | 2 | ||||
-rw-r--r-- | mm/oom_kill.c | 5 |
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 | ||
70 | extern bool out_of_memory(struct oom_control *oc); | 70 | extern bool out_of_memory(struct oom_control *oc); |
71 | 71 | ||
72 | extern void exit_oom_victim(struct task_struct *tsk); | 72 | extern void exit_oom_victim(void); |
73 | 73 | ||
74 | extern int register_oom_notifier(struct notifier_block *nb); | 74 | extern int register_oom_notifier(struct notifier_block *nb); |
75 | extern int unregister_oom_notifier(struct notifier_block *nb); | 75 | extern 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 | ||
517 | static struct task_struct *find_alive_thread(struct task_struct *p) | 517 | static 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 | */ |
665 | void exit_oom_victim(struct task_struct *tsk) | 665 | void 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); |