Messages in this thread |  | | | Date | Tue, 1 Jun 2010 21:27:26 +0200 | | From | Oleg Nesterov <> | | Subject | Re: [PATCH 3/5] oom: Fix child process iteration properly |
| |
On 06/01, KOSAKI Motohiro wrote: > > @@ -88,6 +88,7 @@ unsigned long badness(struct task_struct *p, unsigned long uptime) > { > unsigned long points, cpu_time, run_time; > struct task_struct *c; > + struct task_struct *t = p;
This initialization should be moved down to
> + do { > + list_for_each_entry(c, &t->children, sibling) { > + child = find_lock_task_mm(c); > + if (child) { > + if (child->mm != p->mm) > + points += child->mm->total_vm/2 + 1; > + task_unlock(child); > + } > } > - } > + } while_each_thread(p, t);
this loop. We have "p = find_lock_task_mm(p)" in between which can change p.
Apart from this, I think the whole series is nice.
Oleg.
|  |