diff options
author | Arnd Bergmann <arnd@arndb.de> | 2012-07-11 12:50:20 +0200 |
---|---|---|
committer | Arnd Bergmann <arnd@arndb.de> | 2012-07-11 12:50:20 +0200 |
commit | 0dc19510430b20b3b2d6d1b9b796fd42fa2af64a (patch) | |
tree | a512cf400d74d72272ce6cf5c4d782538213d433 /mm/oom_kill.c | |
parent | b52a2c472d7fcf215e31dffdd382651e1b99f138 (diff) | |
parent | bd0a521e88aa7a06ae7aabaed7ae196ed4ad867a (diff) | |
download | linux-stable-0dc19510430b20b3b2d6d1b9b796fd42fa2af64a.tar.gz linux-stable-0dc19510430b20b3b2d6d1b9b796fd42fa2af64a.tar.bz2 linux-stable-0dc19510430b20b3b2d6d1b9b796fd42fa2af64a.zip |
Merge tag 'v3.5-rc6' into next/soc
Linux 3.5-rc6
Dependency for imx/soc changes
Diffstat (limited to 'mm/oom_kill.c')
-rw-r--r-- | mm/oom_kill.c | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/mm/oom_kill.c b/mm/oom_kill.c index 416637f0e924..ac300c99baf6 100644 --- a/mm/oom_kill.c +++ b/mm/oom_kill.c @@ -184,6 +184,7 @@ unsigned long oom_badness(struct task_struct *p, struct mem_cgroup *memcg, const nodemask_t *nodemask, unsigned long totalpages) { long points; + long adj; if (oom_unkillable_task(p, memcg, nodemask)) return 0; @@ -192,7 +193,8 @@ unsigned long oom_badness(struct task_struct *p, struct mem_cgroup *memcg, if (!p) return 0; - if (p->signal->oom_score_adj == OOM_SCORE_ADJ_MIN) { + adj = p->signal->oom_score_adj; + if (adj == OOM_SCORE_ADJ_MIN) { task_unlock(p); return 0; } @@ -210,14 +212,11 @@ unsigned long oom_badness(struct task_struct *p, struct mem_cgroup *memcg, * implementation used by LSMs. */ if (has_capability_noaudit(p, CAP_SYS_ADMIN)) - points -= 30 * totalpages / 1000; + adj -= 30; - /* - * /proc/pid/oom_score_adj ranges from -1000 to +1000 such that it may - * either completely disable oom killing or always prefer a certain - * task. - */ - points += p->signal->oom_score_adj * totalpages / 1000; + /* Normalize to oom_score_adj units */ + adj *= totalpages / 1000; + points += adj; /* * Never return 0 for an eligible task regardless of the root bonus and @@ -366,7 +365,7 @@ static struct task_struct *select_bad_process(unsigned int *ppoints, /** * dump_tasks - dump current memory state of all system tasks - * @mem: current's memory controller, if constrained + * @memcg: current's memory controller, if constrained * @nodemask: nodemask passed to page allocator for mempolicy ooms * * Dumps the current memory state of all eligible tasks. Tasks not in the same |