From: Matthias Kaehlcke kernel/exit.c: Convert list_for_each(_safe) to list_for_each_entry(_safe) in forget_original_parent(), exit_notify() and do_wait() Signed-off-by: Matthias Kaehlcke Signed-off-by: Andrew Morton --- kernel/exit.c | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff -puN kernel/exit.c~kernel-exitc-use-list_for_each_entry_safe-instead-of-list_for_each_safe kernel/exit.c --- a/kernel/exit.c~kernel-exitc-use-list_for_each_entry_safe-instead-of-list_for_each_safe +++ a/kernel/exit.c @@ -688,8 +688,7 @@ reparent_thread(struct task_struct *p, s static void forget_original_parent(struct task_struct *father, struct list_head *to_release) { - struct task_struct *p, *reaper = father; - struct list_head *_p, *_n; + struct task_struct *p, *n, *reaper = father; do { reaper = next_thread(reaper); @@ -707,9 +706,8 @@ forget_original_parent(struct task_struc * * Search them and reparent children. */ - list_for_each_safe(_p, _n, &father->children) { + list_for_each_entry_safe(p, n, &father->children, sibling) { int ptrace; - p = list_entry(_p, struct task_struct, sibling); ptrace = p->ptrace; @@ -737,8 +735,7 @@ forget_original_parent(struct task_struc if (unlikely(ptrace && p->exit_state == EXIT_ZOMBIE && p->exit_signal == -1)) list_add(&p->ptrace_list, to_release); } - list_for_each_safe(_p, _n, &father->ptrace_children) { - p = list_entry(_p, struct task_struct, ptrace_list); + list_for_each_entry_safe(p, n, &father->ptrace_children, ptrace_list) { choose_new_parent(p, reaper); reparent_thread(p, father, 1); } @@ -1542,12 +1539,9 @@ repeat: tsk = current; do { struct task_struct *p; - struct list_head *_p; int ret; - list_for_each(_p,&tsk->children) { - p = list_entry(_p, struct task_struct, sibling); - + list_for_each_entry(p, &tsk->children, sibling) { ret = eligible_child(pid, options, p); if (!ret) continue; @@ -1629,9 +1623,8 @@ check_continued: } } if (!flag) { - list_for_each(_p, &tsk->ptrace_children) { - p = list_entry(_p, struct task_struct, - ptrace_list); + list_for_each_entry(p, &tsk->ptrace_children, + ptrace_list) { if (!eligible_child(pid, options, p)) continue; flag = 1; _