diff options
author | Pavel Emelyanov <xemul@openvz.org> | 2008-02-08 07:19:20 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2008-02-08 12:22:29 -0500 |
commit | 6c5f3e7b43300508fe3947ff3cfff0f86043bb57 (patch) | |
tree | 9843b8897ec3357b09f62bb6423cd4753e1d4516 | |
parent | fea9d175545b38cb3e84569400419eb81bc90fa3 (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.c | 2 | ||||
-rw-r--r-- | fs/locks.c | 5 | ||||
-rw-r--r-- | ipc/mqueue.c | 3 | ||||
-rw-r--r-- | kernel/exit.c | 6 | ||||
-rw-r--r-- | kernel/fork.c | 8 | ||||
-rw-r--r-- | kernel/sys.c | 7 | ||||
-rw-r--r-- | kernel/sysctl.c | 2 | ||||
-rw-r--r-- | kernel/timer.c | 2 |
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; |