mirror of
https://github.com/adulau/aha.git
synced 2024-12-28 03:36:19 +00:00
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:
parent
fea9d17554
commit
6c5f3e7b43
8 changed files with 12 additions and 23 deletions
|
@ -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);
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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;
|
||||||
|
|
Loading…
Reference in a new issue