+++ /dev/null
-From foo@baz Thu Mar 22 14:40:24 CET 2018
-From: Michal Hocko <mhocko@suse.com>
-Date: Wed, 3 May 2017 14:54:57 -0700
-Subject: oom: improve oom disable handling
-
-From: Michal Hocko <mhocko@suse.com>
-
-
-[ Upstream commit d75da004c708c9fca7b53f7da293a295522414d9 ]
-
-Tetsuo has reported that sysrq triggered OOM killer will print a
-misleading information when no tasks are selected:
-
- sysrq: SysRq : Manual OOM execution
- Out of memory: Kill process 4468 ((agetty)) score 0 or sacrifice child
- Killed process 4468 ((agetty)) total-vm:43704kB, anon-rss:1760kB, file-rss:0kB, shmem-rss:0kB
- sysrq: SysRq : Manual OOM execution
- Out of memory: Kill process 4469 (systemd-cgroups) score 0 or sacrifice child
- Killed process 4469 (systemd-cgroups) total-vm:10704kB, anon-rss:120kB, file-rss:0kB, shmem-rss:0kB
- sysrq: SysRq : Manual OOM execution
- sysrq: OOM request ignored because killer is disabled
- sysrq: SysRq : Manual OOM execution
- sysrq: OOM request ignored because killer is disabled
- sysrq: SysRq : Manual OOM execution
- sysrq: OOM request ignored because killer is disabled
-
-The real reason is that there are no eligible tasks for the OOM killer
-to select but since commit 7c5f64f84483 ("mm: oom: deduplicate victim
-selection code for memcg and global oom") the semantic of out_of_memory
-has changed without updating moom_callback.
-
-This patch updates moom_callback to tell that no task was eligible which
-is the case for both oom killer disabled and no eligible tasks. In
-order to help distinguish first case from the second add printk to both
-oom_killer_{enable,disable}. This information is useful on its own
-because it might help debugging potential memory allocation failures.
-
-Fixes: 7c5f64f84483 ("mm: oom: deduplicate victim selection code for memcg and global oom")
-Link: http://lkml.kernel.org/r/20170404134705.6361-1-mhocko@kernel.org
-Signed-off-by: Michal Hocko <mhocko@suse.com>
-Reported-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
-Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- drivers/tty/sysrq.c | 2 +-
- mm/oom_kill.c | 2 ++
- 2 files changed, 3 insertions(+), 1 deletion(-)
-
---- a/drivers/tty/sysrq.c
-+++ b/drivers/tty/sysrq.c
-@@ -375,7 +375,7 @@ static void moom_callback(struct work_st
-
- mutex_lock(&oom_lock);
- if (!out_of_memory(&oc))
-- pr_info("OOM request ignored because killer is disabled\n");
-+ pr_info("OOM request ignored. No task eligible\n");
- mutex_unlock(&oom_lock);
- }
-
---- a/mm/oom_kill.c
-+++ b/mm/oom_kill.c
-@@ -706,6 +706,7 @@ void exit_oom_victim(void)
- void oom_killer_enable(void)
- {
- oom_killer_disabled = false;
-+ pr_info("OOM killer enabled.\n");
- }
-
- /**
-@@ -742,6 +743,7 @@ bool oom_killer_disable(signed long time
- oom_killer_enable();
- return false;
- }
-+ pr_info("OOM killer disabled.\n");
-
- return true;
- }