Remove find_attach_pid()
Subsystems (4)
PATCH 1/1 Remove find_attach_pid()
As Eric Biederman pointed out, find_attach_pid() is not really necessary.
---
From: Sukadev Bhattiprolu <[email protected]>
Remove find_attach_pid() interface and have callers of attach_pid() pass in a struct pid.
Signed-off-by Sukadev Bhattiprolu <[email protected]>
Cc Cedric Le Goater <[email protected]>
Cc Dave Hansen <[email protected]>
Cc Serge Hallyn <[email protected]>
Cc Eric W. Biederman <[email protected]>
--- fs/exec.c | 2 +- include/linux/pid.h | 11 ++--------- kernel/exit.c | 4 ++-- kernel/fork.c | 13 ++++++++----- kernel/pid.c | 6 ++++++ kernel/sys.c | 2 +- 6 files changed, 20 insertions(+), 18 deletions(-)
fs/exec.c +1 -1
@@ -701,7 +701,7 @@ static int de_thread(struct task_struct*/ detach_pid (tsk,PIDTYPE_PID ); tsk->pid = leader->pid; -find_attach_pid (tsk,PIDTYPE_PID , tsk->pid); +attach_pid (tsk,PIDTYPE_PID ,find_pid (tsk->pid));transfer_pid (leader, tsk,PIDTYPE_PGID );transfer_pid (leader, tsk,PIDTYPE_SID );list_replace_rcu (&leader->tasks, &tsk->tasks);
kernel/exit.c +2 -2
@@ -301,12 +301,12 @@ void __set_special_pids(pid_t session, pif (process_session (curr) != session) {detach_pid (curr,PIDTYPE_SID );set_signal_session (curr->signal, session); -find_attach_pid (curr,PIDTYPE_SID , session); +attach_pid (curr,PIDTYPE_SID ,find_pid (session)); }if (process_group (curr) != pgrp) {detach_pid (curr,PIDTYPE_PGID ); curr->signal->pgrp = pgrp; -find_attach_pid (curr,PIDTYPE_PGID , pgrp); +attach_pid (curr,PIDTYPE_PGID ,find_pid (pgrp)); } }
kernel/fork.c +8 -5
@@ -1245,16 +1245,19 @@ static struct task_struct *copy_process(__ptrace_link (p, current->parent);if (thread_group_leader (p)) { +pid_t pgid =process_group (current); +pid_t sid =process_session (current); + p->signal->tty = current->signal->tty; - p->signal->pgrp =process_group (current); -set_signal_session (p->signal,process_session (current)); -find_attach_pid (p,PIDTYPE_PGID ,process_group (p)); -find_attach_pid (p,PIDTYPE_SID ,process_session (p)); + p->signal->pgrp = pgid; +set_signal_session (p->signal, sid); +attach_pid (p,PIDTYPE_PGID ,find_pid (pgid)); +attach_pid (p,PIDTYPE_SID ,find_pid (sid));list_add_tail_rcu (&p->tasks, &init_task.tasks);__get_cpu_var (process_counts)++; } -find_attach_pid (p,PIDTYPE_PID , p->pid); +attach_pid (p,PIDTYPE_PID ,find_pid (p->pid)); nr_threads++; }
include/linux/pid.h +2 -9
@@ -84,18 +84,11 @@ extern struct pid *find_get_pid(int nr);extern struct pid *find_ge_pid (int nr);/* -* attach_pid(), find_attach_pid() and detach_pid() must be called with the -* tasklist_lock write-held. +* attach_pid() and detach_pid() must be called with the tasklist_lock +* write-held. */ extern int FASTCALL (attach_pid (struct task_struct *task,enum pid_type type,struct pid *pid)); - -static inline int find_attach_pid (struct task_struct *task,enum pid_type type, -int nr) -{ -return attach_pid (task, type,find_pid (nr)); -} -extern void FASTCALL (detach_pid (struct task_struct *task,enum pid_type ));extern void FASTCALL (transfer_pid (struct task_struct *old,struct task_struct *new,enum pid_type ));
kernel/sys.c +1 -1
@@ -1480,7 +1480,7 @@ asmlinkage long sys_setpgid(pid_t pid, pif (process_group (p) != pgid) {detach_pid (p,PIDTYPE_PGID ); p->signal->pgrp = pgid; -find_attach_pid (p,PIDTYPE_PGID , pgid); +attach_pid (p,PIDTYPE_PGID ,find_pid (pgid)); } err =0 ;
kernel/pid.c +6 -0
@@ -247,6 +247,9 @@ struct pid * fastcall find_pid(int nr) }EXPORT_SYMBOL_GPL (find_pid); +/* +* attach_pid() must be called with the tasklist_lock write-held. +*/ int fastcall attach_pid(struct task_struct *task, enum pid_type type,struct pid *pid) {
@@ -259,6 +262,9 @@ int fastcall attach_pid(struct task_strureturn 0 ; } +/* +* detach_pid() must be called with the tasklist_lock write-held. +*/ void fastcall detach_pid(struct task_struct *task, enum pid_type type) {struct pid_link *link;