asmlinkage long sys_getpgid(pid_t pid) { struct task_struct *p; struct pid *grp; int retval; rcu_read_lock(); if (!pid) grp = task_pgrp(current); else { retval = -ESRCH; p = find_task_by_vpid(pid); if (!p) goto out; grp = task_pgrp(p); if (!grp) goto out; retval = security_task_getpgid(p); if (retval) goto out; } retval = pid_vnr(grp); out: rcu_read_unlock(); return retval; }
asmlinkage long sys_getpgid(pid_t pid) { if (!pid) { return process_group(current); } else { int retval; struct task_struct *p; read_lock(&tasklist_lock); p = find_task_by_pid(pid); retval = -ESRCH; if (p) { retval = security_task_getpgid(p); if (!retval) retval = process_group(p); } read_unlock(&tasklist_lock); return retval; } }
asmlinkage long sys_getpgid(pid_t pid) { if (!pid) return task_pgrp_vnr(current); else { int retval; struct task_struct *p; struct pid_namespace *ns; ns = current->nsproxy->pid_ns; read_lock(&tasklist_lock); p = find_task_by_pid_ns(pid, ns); retval = -ESRCH; if (p) { retval = security_task_getpgid(p); if (!retval) retval = task_pgrp_nr_ns(p, ns); } read_unlock(&tasklist_lock); return retval; } }