aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2011-03-14 18:17:07 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2011-03-14 18:17:07 -0400
commit52d3c03675fdbe1965b9b1909072b40ad2f80063 (patch)
tree2261f8576d1317c5810edc326be0dfff964c254f
parentdc1b83ab08f1954335692cdcd499f78c94f4c42a (diff)
Revert "oom: oom_kill_process: fix the child_points logic"
This reverts the parent commit. I hate doing that, but it's generating some discussion ("half of it is right"), and since I am planning on doing the 2.6.38 release later today we can punt it to stable if required. Let's not rock the boat right now. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r--mm/oom_kill.c11
1 files changed, 3 insertions, 8 deletions
diff --git a/mm/oom_kill.c b/mm/oom_kill.c
index b19c78eb74c0..7dcca55ede7c 100644
--- a/mm/oom_kill.c
+++ b/mm/oom_kill.c
@@ -458,10 +458,10 @@ static int oom_kill_process(struct task_struct *p, gfp_t gfp_mask, int order,
458 struct mem_cgroup *mem, nodemask_t *nodemask, 458 struct mem_cgroup *mem, nodemask_t *nodemask,
459 const char *message) 459 const char *message)
460{ 460{
461 struct task_struct *victim; 461 struct task_struct *victim = p;
462 struct task_struct *child; 462 struct task_struct *child;
463 struct task_struct *t; 463 struct task_struct *t = p;
464 unsigned int victim_points; 464 unsigned int victim_points = 0;
465 465
466 if (printk_ratelimit()) 466 if (printk_ratelimit())
467 dump_header(p, gfp_mask, order, mem, nodemask); 467 dump_header(p, gfp_mask, order, mem, nodemask);
@@ -487,15 +487,10 @@ static int oom_kill_process(struct task_struct *p, gfp_t gfp_mask, int order,
487 * parent. This attempts to lose the minimal amount of work done while 487 * parent. This attempts to lose the minimal amount of work done while
488 * still freeing memory. 488 * still freeing memory.
489 */ 489 */
490 victim_points = oom_badness(p, mem, nodemask, totalpages);
491 victim = p;
492 t = p;
493 do { 490 do {
494 list_for_each_entry(child, &t->children, sibling) { 491 list_for_each_entry(child, &t->children, sibling) {
495 unsigned int child_points; 492 unsigned int child_points;
496 493
497 if (child->mm == t->mm)
498 continue;
499 /* 494 /*
500 * oom_badness() returns 0 if the thread is unkillable 495 * oom_badness() returns 0 if the thread is unkillable
501 */ 496 */