From: Oleg Nesterov add_parent(p, parent) is always called with parent == p->parent, and it makes no sense to do it differently. This patch removes this argument. No changes in affected .o files. Signed-off-by: Oleg Nesterov Cc: "Eric W. Biederman" Signed-off-by: Andrew Morton --- arch/mips/kernel/irixsig.c | 4 ++-- fs/exec.c | 4 ++-- include/linux/sched.h | 4 ++-- kernel/exit.c | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff -puN arch/mips/kernel/irixsig.c~remove-add_parents-parent-argument arch/mips/kernel/irixsig.c --- devel/arch/mips/kernel/irixsig.c~remove-add_parents-parent-argument 2006-02-27 20:58:31.000000000 -0800 +++ devel-akpm/arch/mips/kernel/irixsig.c 2006-02-27 20:58:31.000000000 -0800 @@ -603,7 +603,7 @@ repeat: /* move to end of parent's list to avoid starvation */ write_lock_irq(&tasklist_lock); remove_parent(p); - add_parent(p, p->parent); + add_parent(p); write_unlock_irq(&tasklist_lock); retval = ru ? getrusage(p, RUSAGE_BOTH, ru) : 0; if (retval) @@ -643,7 +643,7 @@ repeat: write_lock_irq(&tasklist_lock); remove_parent(p); p->parent = p->real_parent; - add_parent(p, p->parent); + add_parent(p); do_notify_parent(p, SIGCHLD); write_unlock_irq(&tasklist_lock); } else diff -puN fs/exec.c~remove-add_parents-parent-argument fs/exec.c --- devel/fs/exec.c~remove-add_parents-parent-argument 2006-02-27 20:58:31.000000000 -0800 +++ devel-akpm/fs/exec.c 2006-02-27 20:58:31.000000000 -0800 @@ -725,8 +725,8 @@ static int de_thread(struct task_struct current->group_leader = current; leader->group_leader = leader; - add_parent(current, current->parent); - add_parent(leader, leader->parent); + add_parent(current); + add_parent(leader); if (ptrace) { current->ptrace = ptrace; __ptrace_link(current, parent); diff -puN include/linux/sched.h~remove-add_parents-parent-argument include/linux/sched.h --- devel/include/linux/sched.h~remove-add_parents-parent-argument 2006-02-27 20:58:31.000000000 -0800 +++ devel-akpm/include/linux/sched.h 2006-02-27 20:58:31.000000000 -0800 @@ -1178,7 +1178,7 @@ extern void wait_task_inactive(task_t * #endif #define remove_parent(p) list_del_init(&(p)->sibling) -#define add_parent(p, parent) list_add_tail(&(p)->sibling,&(parent)->children) +#define add_parent(p) list_add_tail(&(p)->sibling,&(p)->parent->children) #define REMOVE_LINKS(p) do { \ if (thread_group_leader(p)) \ @@ -1189,7 +1189,7 @@ extern void wait_task_inactive(task_t * #define SET_LINKS(p) do { \ if (thread_group_leader(p)) \ list_add_tail(&(p)->tasks,&init_task.tasks); \ - add_parent(p, (p)->parent); \ + add_parent(p); \ } while (0) #define next_task(p) list_entry((p)->tasks.next, struct task_struct, tasks) diff -puN kernel/exit.c~remove-add_parents-parent-argument kernel/exit.c --- devel/kernel/exit.c~remove-add_parents-parent-argument 2006-02-27 20:58:31.000000000 -0800 +++ devel-akpm/kernel/exit.c 2006-02-27 20:58:31.000000000 -0800 @@ -1270,7 +1270,7 @@ bail_ref: /* move to end of parent's list to avoid starvation */ remove_parent(p); - add_parent(p, p->parent); + add_parent(p); write_unlock_irq(&tasklist_lock); _