Pidns: make full use of xxx_vnr() calls

Some time ago the xxx_vnr() calls (e.g.  pid_vnr or find_task_by_vpid) were
_all_ converted to operate on the current pid namespace.  After this each call
like xxx_nr_ns(foo, current->nsproxy->pid_ns) is nothing but a xxx_vnr(foo)
one.

Switch all the xxx_nr_ns() callers to use the xxx_vnr() calls where
appropriate.

Signed-off-by: Pavel Emelyanov <xemul@openvz.org>
Reviewed-by: Oleg Nesterov <oleg@tv-sign.ru>
Cc: "Eric W. Biederman" <ebiederm@xmission.com>
Cc: Balbir Singh <balbir@in.ibm.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Pavel Emelyanov 2008-02-08 04:19:20 -08:00 committed by Linus Torvalds
parent fea9d17554
commit 6c5f3e7b43
8 changed files with 12 additions and 23 deletions

View file

@ -309,7 +309,7 @@ pid_t f_getown(struct file *filp)
{ {
pid_t pid; pid_t pid;
read_lock(&filp->f_owner.lock); read_lock(&filp->f_owner.lock);
pid = pid_nr_ns(filp->f_owner.pid, current->nsproxy->pid_ns); pid = pid_vnr(filp->f_owner.pid);
if (filp->f_owner.pid_type == PIDTYPE_PGID) if (filp->f_owner.pid_type == PIDTYPE_PGID)
pid = -pid; pid = -pid;
read_unlock(&filp->f_owner.lock); read_unlock(&filp->f_owner.lock);

View file

@ -658,8 +658,7 @@ posix_test_lock(struct file *filp, struct file_lock *fl)
if (cfl) { if (cfl) {
__locks_copy_lock(fl, cfl); __locks_copy_lock(fl, cfl);
if (cfl->fl_nspid) if (cfl->fl_nspid)
fl->fl_pid = pid_nr_ns(cfl->fl_nspid, fl->fl_pid = pid_vnr(cfl->fl_nspid);
task_active_pid_ns(current));
} else } else
fl->fl_type = F_UNLCK; fl->fl_type = F_UNLCK;
unlock_kernel(); unlock_kernel();
@ -2084,7 +2083,7 @@ static void lock_get_status(struct seq_file *f, struct file_lock *fl,
unsigned int fl_pid; unsigned int fl_pid;
if (fl->fl_nspid) if (fl->fl_nspid)
fl_pid = pid_nr_ns(fl->fl_nspid, task_active_pid_ns(current)); fl_pid = pid_vnr(fl->fl_nspid);
else else
fl_pid = fl->fl_pid; fl_pid = fl->fl_pid;

View file

@ -332,8 +332,7 @@ static ssize_t mqueue_read_file(struct file *filp, char __user *u_data,
(info->notify_owner && (info->notify_owner &&
info->notify.sigev_notify == SIGEV_SIGNAL) ? info->notify.sigev_notify == SIGEV_SIGNAL) ?
info->notify.sigev_signo : 0, info->notify.sigev_signo : 0,
pid_nr_ns(info->notify_owner, pid_vnr(info->notify_owner));
current->nsproxy->pid_ns));
spin_unlock(&info->lock); spin_unlock(&info->lock);
buffer[sizeof(buffer)-1] = '\0'; buffer[sizeof(buffer)-1] = '\0';
slen = strlen(buffer)+1; slen = strlen(buffer)+1;

View file

@ -1174,7 +1174,7 @@ static int wait_task_zombie(struct task_struct *p, int noreap,
{ {
unsigned long state; unsigned long state;
int retval, status, traced; int retval, status, traced;
pid_t pid = task_pid_nr_ns(p, current->nsproxy->pid_ns); pid_t pid = task_pid_vnr(p);
if (unlikely(noreap)) { if (unlikely(noreap)) {
uid_t uid = p->uid; uid_t uid = p->uid;
@ -1369,7 +1369,7 @@ unlock_sig:
* possibly take page faults for user memory. * possibly take page faults for user memory.
*/ */
get_task_struct(p); get_task_struct(p);
pid = task_pid_nr_ns(p, current->nsproxy->pid_ns); pid = task_pid_vnr(p);
why = (p->ptrace & PT_PTRACED) ? CLD_TRAPPED : CLD_STOPPED; why = (p->ptrace & PT_PTRACED) ? CLD_TRAPPED : CLD_STOPPED;
read_unlock(&tasklist_lock); read_unlock(&tasklist_lock);
@ -1428,7 +1428,7 @@ static int wait_task_continued(struct task_struct *p, int noreap,
p->signal->flags &= ~SIGNAL_STOP_CONTINUED; p->signal->flags &= ~SIGNAL_STOP_CONTINUED;
spin_unlock_irq(&p->sighand->siglock); spin_unlock_irq(&p->sighand->siglock);
pid = task_pid_nr_ns(p, current->nsproxy->pid_ns); pid = task_pid_vnr(p);
uid = p->uid; uid = p->uid;
get_task_struct(p); get_task_struct(p);
read_unlock(&tasklist_lock); read_unlock(&tasklist_lock);

View file

@ -1488,13 +1488,7 @@ long do_fork(unsigned long clone_flags,
if (!IS_ERR(p)) { if (!IS_ERR(p)) {
struct completion vfork; struct completion vfork;
/* nr = task_pid_vnr(p);
* this is enough to call pid_nr_ns here, but this if
* improves optimisation of regular fork()
*/
nr = (clone_flags & CLONE_NEWPID) ?
task_pid_nr_ns(p, current->nsproxy->pid_ns) :
task_pid_vnr(p);
if (clone_flags & CLONE_PARENT_SETTID) if (clone_flags & CLONE_PARENT_SETTID)
put_user(nr, parent_tidptr); put_user(nr, parent_tidptr);

View file

@ -991,17 +991,14 @@ asmlinkage long sys_getpgid(pid_t pid)
else { else {
int retval; int retval;
struct task_struct *p; struct task_struct *p;
struct pid_namespace *ns;
ns = current->nsproxy->pid_ns;
read_lock(&tasklist_lock); read_lock(&tasklist_lock);
p = find_task_by_pid_ns(pid, ns); p = find_task_by_vpid(pid);
retval = -ESRCH; retval = -ESRCH;
if (p) { if (p) {
retval = security_task_getpgid(p); retval = security_task_getpgid(p);
if (!retval) if (!retval)
retval = task_pgrp_nr_ns(p, ns); retval = task_pgrp_vnr(p);
} }
read_unlock(&tasklist_lock); read_unlock(&tasklist_lock);
return retval; return retval;

View file

@ -2488,7 +2488,7 @@ static int proc_do_cad_pid(struct ctl_table *table, int write, struct file *filp
pid_t tmp; pid_t tmp;
int r; int r;
tmp = pid_nr_ns(cad_pid, current->nsproxy->pid_ns); tmp = pid_vnr(cad_pid);
r = __do_proc_dointvec(&tmp, table, write, filp, buffer, r = __do_proc_dointvec(&tmp, table, write, filp, buffer,
lenp, ppos, NULL, NULL); lenp, ppos, NULL, NULL);

View file

@ -979,7 +979,7 @@ asmlinkage long sys_getppid(void)
int pid; int pid;
rcu_read_lock(); rcu_read_lock();
pid = task_tgid_nr_ns(current->real_parent, current->nsproxy->pid_ns); pid = task_tgid_vnr(current->real_parent);
rcu_read_unlock(); rcu_read_unlock();
return pid; return pid;