aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPavel Emelyanov <xemul@openvz.org>2008-02-08 07:19:20 -0500
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2008-02-08 12:22:29 -0500
commit6c5f3e7b43300508fe3947ff3cfff0f86043bb57 (patch)
tree9843b8897ec3357b09f62bb6423cd4753e1d4516
parentfea9d175545b38cb3e84569400419eb81bc90fa3 (diff)
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>
-rw-r--r--fs/fcntl.c2
-rw-r--r--fs/locks.c5
-rw-r--r--ipc/mqueue.c3
-rw-r--r--kernel/exit.c6
-rw-r--r--kernel/fork.c8
-rw-r--r--kernel/sys.c7
-rw-r--r--kernel/sysctl.c2
-rw-r--r--kernel/timer.c2
8 files changed, 12 insertions, 23 deletions
diff --git a/fs/fcntl.c b/fs/fcntl.c
index 8685263ccc4a..7efe59ed1ed8 100644
--- a/fs/fcntl.c
+++ b/fs/fcntl.c
@@ -309,7 +309,7 @@ pid_t f_getown(struct file *filp)
309{ 309{
310 pid_t pid; 310 pid_t pid;
311 read_lock(&filp->f_owner.lock); 311 read_lock(&filp->f_owner.lock);
312 pid = pid_nr_ns(filp->f_owner.pid, current->nsproxy->pid_ns); 312 pid = pid_vnr(filp->f_owner.pid);
313 if (filp->f_owner.pid_type == PIDTYPE_PGID) 313 if (filp->f_owner.pid_type == PIDTYPE_PGID)
314 pid = -pid; 314 pid = -pid;
315 read_unlock(&filp->f_owner.lock); 315 read_unlock(&filp->f_owner.lock);
diff --git a/fs/locks.c b/fs/locks.c
index 49354b9c7dc1..f36f0e61558d 100644
--- a/fs/locks.c
+++ b/fs/locks.c
@@ -658,8 +658,7 @@ posix_test_lock(struct file *filp, struct file_lock *fl)
658 if (cfl) { 658 if (cfl) {
659 __locks_copy_lock(fl, cfl); 659 __locks_copy_lock(fl, cfl);
660 if (cfl->fl_nspid) 660 if (cfl->fl_nspid)
661 fl->fl_pid = pid_nr_ns(cfl->fl_nspid, 661 fl->fl_pid = pid_vnr(cfl->fl_nspid);
662 task_active_pid_ns(current));
663 } else 662 } else
664 fl->fl_type = F_UNLCK; 663 fl->fl_type = F_UNLCK;
665 unlock_kernel(); 664 unlock_kernel();
@@ -2084,7 +2083,7 @@ static void lock_get_status(struct seq_file *f, struct file_lock *fl,
2084 unsigned int fl_pid; 2083 unsigned int fl_pid;
2085 2084
2086 if (fl->fl_nspid) 2085 if (fl->fl_nspid)
2087 fl_pid = pid_nr_ns(fl->fl_nspid, task_active_pid_ns(current)); 2086 fl_pid = pid_vnr(fl->fl_nspid);
2088 else 2087 else
2089 fl_pid = fl->fl_pid; 2088 fl_pid = fl->fl_pid;
2090 2089
diff --git a/ipc/mqueue.c b/ipc/mqueue.c
index 6ca7b97114f3..147d50238c7b 100644
--- a/ipc/mqueue.c
+++ b/ipc/mqueue.c
@@ -332,8 +332,7 @@ static ssize_t mqueue_read_file(struct file *filp, char __user *u_data,
332 (info->notify_owner && 332 (info->notify_owner &&
333 info->notify.sigev_notify == SIGEV_SIGNAL) ? 333 info->notify.sigev_notify == SIGEV_SIGNAL) ?
334 info->notify.sigev_signo : 0, 334 info->notify.sigev_signo : 0,
335 pid_nr_ns(info->notify_owner, 335 pid_vnr(info->notify_owner));
336 current->nsproxy->pid_ns));
337 spin_unlock(&info->lock); 336 spin_unlock(&info->lock);
338 buffer[sizeof(buffer)-1] = '\0'; 337 buffer[sizeof(buffer)-1] = '\0';
339 slen = strlen(buffer)+1; 338 slen = strlen(buffer)+1;
diff --git a/kernel/exit.c b/kernel/exit.c
index 2567de3487bd..81345ba4b253 100644
--- a/kernel/exit.c
+++ b/kernel/exit.c
@@ -1174,7 +1174,7 @@ static int wait_task_zombie(struct task_struct *p, int noreap,
1174{ 1174{
1175 unsigned long state; 1175 unsigned long state;
1176 int retval, status, traced; 1176 int retval, status, traced;
1177 pid_t pid = task_pid_nr_ns(p, current->nsproxy->pid_ns); 1177 pid_t pid = task_pid_vnr(p);
1178 1178
1179 if (unlikely(noreap)) { 1179 if (unlikely(noreap)) {
1180 uid_t uid = p->uid; 1180 uid_t uid = p->uid;
@@ -1369,7 +1369,7 @@ unlock_sig:
1369 * possibly take page faults for user memory. 1369 * possibly take page faults for user memory.
1370 */ 1370 */
1371 get_task_struct(p); 1371 get_task_struct(p);
1372 pid = task_pid_nr_ns(p, current->nsproxy->pid_ns); 1372 pid = task_pid_vnr(p);
1373 why = (p->ptrace & PT_PTRACED) ? CLD_TRAPPED : CLD_STOPPED; 1373 why = (p->ptrace & PT_PTRACED) ? CLD_TRAPPED : CLD_STOPPED;
1374 read_unlock(&tasklist_lock); 1374 read_unlock(&tasklist_lock);
1375 1375
@@ -1428,7 +1428,7 @@ static int wait_task_continued(struct task_struct *p, int noreap,
1428 p->signal->flags &= ~SIGNAL_STOP_CONTINUED; 1428 p->signal->flags &= ~SIGNAL_STOP_CONTINUED;
1429 spin_unlock_irq(&p->sighand->siglock); 1429 spin_unlock_irq(&p->sighand->siglock);
1430 1430
1431 pid = task_pid_nr_ns(p, current->nsproxy->pid_ns); 1431 pid = task_pid_vnr(p);
1432 uid = p->uid; 1432 uid = p->uid;
1433 get_task_struct(p); 1433 get_task_struct(p);
1434 read_unlock(&tasklist_lock); 1434 read_unlock(&tasklist_lock);
diff --git a/kernel/fork.c b/kernel/fork.c
index ca54d9704644..31a2bad63a08 100644
--- a/kernel/fork.c
+++ b/kernel/fork.c
@@ -1488,13 +1488,7 @@ long do_fork(unsigned long clone_flags,
1488 if (!IS_ERR(p)) { 1488 if (!IS_ERR(p)) {
1489 struct completion vfork; 1489 struct completion vfork;
1490 1490
1491 /* 1491 nr = task_pid_vnr(p);
1492 * this is enough to call pid_nr_ns here, but this if
1493 * improves optimisation of regular fork()
1494 */
1495 nr = (clone_flags & CLONE_NEWPID) ?
1496 task_pid_nr_ns(p, current->nsproxy->pid_ns) :
1497 task_pid_vnr(p);
1498 1492
1499 if (clone_flags & CLONE_PARENT_SETTID) 1493 if (clone_flags & CLONE_PARENT_SETTID)
1500 put_user(nr, parent_tidptr); 1494 put_user(nr, parent_tidptr);
diff --git a/kernel/sys.c b/kernel/sys.c
index 5a61f8071b8e..a626116af5db 100644
--- a/kernel/sys.c
+++ b/kernel/sys.c
@@ -991,17 +991,14 @@ asmlinkage long sys_getpgid(pid_t pid)
991 else { 991 else {
992 int retval; 992 int retval;
993 struct task_struct *p; 993 struct task_struct *p;
994 struct pid_namespace *ns;
995
996 ns = current->nsproxy->pid_ns;
997 994
998 read_lock(&tasklist_lock); 995 read_lock(&tasklist_lock);
999 p = find_task_by_pid_ns(pid, ns); 996 p = find_task_by_vpid(pid);
1000 retval = -ESRCH; 997 retval = -ESRCH;
1001 if (p) { 998 if (p) {
1002 retval = security_task_getpgid(p); 999 retval = security_task_getpgid(p);
1003 if (!retval) 1000 if (!retval)
1004 retval = task_pgrp_nr_ns(p, ns); 1001 retval = task_pgrp_vnr(p);
1005 } 1002 }
1006 read_unlock(&tasklist_lock); 1003 read_unlock(&tasklist_lock);
1007 return retval; 1004 return retval;
diff --git a/kernel/sysctl.c b/kernel/sysctl.c
index 9dadc9d88a03..89d963ffbb01 100644
--- a/kernel/sysctl.c
+++ b/kernel/sysctl.c
@@ -2488,7 +2488,7 @@ static int proc_do_cad_pid(struct ctl_table *table, int write, struct file *filp
2488 pid_t tmp; 2488 pid_t tmp;
2489 int r; 2489 int r;
2490 2490
2491 tmp = pid_nr_ns(cad_pid, current->nsproxy->pid_ns); 2491 tmp = pid_vnr(cad_pid);
2492 2492
2493 r = __do_proc_dointvec(&tmp, table, write, filp, buffer, 2493 r = __do_proc_dointvec(&tmp, table, write, filp, buffer,
2494 lenp, ppos, NULL, NULL); 2494 lenp, ppos, NULL, NULL);
diff --git a/kernel/timer.c b/kernel/timer.c
index 70b29b59343f..1c4183cd8bdb 100644
--- a/kernel/timer.c
+++ b/kernel/timer.c
@@ -979,7 +979,7 @@ asmlinkage long sys_getppid(void)
979 int pid; 979 int pid;
980 980
981 rcu_read_lock(); 981 rcu_read_lock();
982 pid = task_tgid_nr_ns(current->real_parent, current->nsproxy->pid_ns); 982 pid = task_tgid_vnr(current->real_parent);
983 rcu_read_unlock(); 983 rcu_read_unlock();
984 984
985 return pid; 985 return pid;