Commit 41487c65 authored by Eric W. Biederman's avatar Eric W. Biederman Committed by Linus Torvalds

[PATCH] pid: replace do/while_each_task_pid with do/while_each_pid_task

There isn't any real advantage to this change except that it allows the old
functions to be removed.  Which is easier on maintenance and puts the code in
a more uniform style.
Signed-off-by: default avatarEric W. Biederman <ebiederm@xmission.com>
Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
Cc: Oleg Nesterov <oleg@tv-sign.ru>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent ab521dc0
...@@ -60,6 +60,7 @@ asmlinkage long sys_ioprio_set(int which, int who, int ioprio) ...@@ -60,6 +60,7 @@ asmlinkage long sys_ioprio_set(int which, int who, int ioprio)
int data = IOPRIO_PRIO_DATA(ioprio); int data = IOPRIO_PRIO_DATA(ioprio);
struct task_struct *p, *g; struct task_struct *p, *g;
struct user_struct *user; struct user_struct *user;
struct pid *pgrp;
int ret; int ret;
switch (class) { switch (class) {
...@@ -98,12 +99,14 @@ asmlinkage long sys_ioprio_set(int which, int who, int ioprio) ...@@ -98,12 +99,14 @@ asmlinkage long sys_ioprio_set(int which, int who, int ioprio)
break; break;
case IOPRIO_WHO_PGRP: case IOPRIO_WHO_PGRP:
if (!who) if (!who)
who = process_group(current); pgrp = task_pgrp(current);
do_each_task_pid(who, PIDTYPE_PGID, p) { else
pgrp = find_pid(who);
do_each_pid_task(pgrp, PIDTYPE_PGID, p) {
ret = set_task_ioprio(p, ioprio); ret = set_task_ioprio(p, ioprio);
if (ret) if (ret)
break; break;
} while_each_task_pid(who, PIDTYPE_PGID, p); } while_each_pid_task(pgrp, PIDTYPE_PGID, p);
break; break;
case IOPRIO_WHO_USER: case IOPRIO_WHO_USER:
if (!who) if (!who)
...@@ -167,6 +170,7 @@ asmlinkage long sys_ioprio_get(int which, int who) ...@@ -167,6 +170,7 @@ asmlinkage long sys_ioprio_get(int which, int who)
{ {
struct task_struct *g, *p; struct task_struct *g, *p;
struct user_struct *user; struct user_struct *user;
struct pid *pgrp;
int ret = -ESRCH; int ret = -ESRCH;
int tmpio; int tmpio;
...@@ -182,8 +186,10 @@ asmlinkage long sys_ioprio_get(int which, int who) ...@@ -182,8 +186,10 @@ asmlinkage long sys_ioprio_get(int which, int who)
break; break;
case IOPRIO_WHO_PGRP: case IOPRIO_WHO_PGRP:
if (!who) if (!who)
who = process_group(current); pgrp = task_pgrp(current);
do_each_task_pid(who, PIDTYPE_PGID, p) { else
pgrp = find_pid(who);
do_each_pid_task(pgrp, PIDTYPE_PGID, p) {
tmpio = get_task_ioprio(p); tmpio = get_task_ioprio(p);
if (tmpio < 0) if (tmpio < 0)
continue; continue;
...@@ -191,7 +197,7 @@ asmlinkage long sys_ioprio_get(int which, int who) ...@@ -191,7 +197,7 @@ asmlinkage long sys_ioprio_get(int which, int who)
ret = tmpio; ret = tmpio;
else else
ret = ioprio_best(ret, tmpio); ret = ioprio_best(ret, tmpio);
} while_each_task_pid(who, PIDTYPE_PGID, p); } while_each_pid_task(pgrp, PIDTYPE_PGID, p);
break; break;
case IOPRIO_WHO_USER: case IOPRIO_WHO_USER:
if (!who) if (!who)
......
...@@ -92,15 +92,17 @@ asmlinkage long sys_capget(cap_user_header_t header, cap_user_data_t dataptr) ...@@ -92,15 +92,17 @@ asmlinkage long sys_capget(cap_user_header_t header, cap_user_data_t dataptr)
* cap_set_pg - set capabilities for all processes in a given process * cap_set_pg - set capabilities for all processes in a given process
* group. We call this holding task_capability_lock and tasklist_lock. * group. We call this holding task_capability_lock and tasklist_lock.
*/ */
static inline int cap_set_pg(int pgrp, kernel_cap_t *effective, static inline int cap_set_pg(int pgrp_nr, kernel_cap_t *effective,
kernel_cap_t *inheritable, kernel_cap_t *inheritable,
kernel_cap_t *permitted) kernel_cap_t *permitted)
{ {
struct task_struct *g, *target; struct task_struct *g, *target;
int ret = -EPERM; int ret = -EPERM;
int found = 0; int found = 0;
struct pid *pgrp;
do_each_task_pid(pgrp, PIDTYPE_PGID, g) { pgrp = find_pid(pgrp_nr);
do_each_pid_task(pgrp, PIDTYPE_PGID, g) {
target = g; target = g;
while_each_thread(g, target) { while_each_thread(g, target) {
if (!security_capset_check(target, effective, if (!security_capset_check(target, effective,
...@@ -113,7 +115,7 @@ static inline int cap_set_pg(int pgrp, kernel_cap_t *effective, ...@@ -113,7 +115,7 @@ static inline int cap_set_pg(int pgrp, kernel_cap_t *effective,
} }
found = 1; found = 1;
} }
} while_each_task_pid(pgrp, PIDTYPE_PGID, g); } while_each_pid_task(pgrp, PIDTYPE_PGID, g);
if (!found) if (!found)
ret = 0; ret = 0;
......
...@@ -596,6 +596,7 @@ asmlinkage long sys_setpriority(int which, int who, int niceval) ...@@ -596,6 +596,7 @@ asmlinkage long sys_setpriority(int which, int who, int niceval)
struct task_struct *g, *p; struct task_struct *g, *p;
struct user_struct *user; struct user_struct *user;
int error = -EINVAL; int error = -EINVAL;
struct pid *pgrp;
if (which > 2 || which < 0) if (which > 2 || which < 0)
goto out; goto out;
...@@ -610,18 +611,21 @@ asmlinkage long sys_setpriority(int which, int who, int niceval) ...@@ -610,18 +611,21 @@ asmlinkage long sys_setpriority(int which, int who, int niceval)
read_lock(&tasklist_lock); read_lock(&tasklist_lock);
switch (which) { switch (which) {
case PRIO_PROCESS: case PRIO_PROCESS:
if (!who) if (who)
who = current->pid;
p = find_task_by_pid(who); p = find_task_by_pid(who);
else
p = current;
if (p) if (p)
error = set_one_prio(p, niceval, error); error = set_one_prio(p, niceval, error);
break; break;
case PRIO_PGRP: case PRIO_PGRP:
if (!who) if (who)
who = process_group(current); pgrp = find_pid(who);
do_each_task_pid(who, PIDTYPE_PGID, p) { else
pgrp = task_pgrp(current);
do_each_pid_task(pgrp, PIDTYPE_PGID, p) {
error = set_one_prio(p, niceval, error); error = set_one_prio(p, niceval, error);
} while_each_task_pid(who, PIDTYPE_PGID, p); } while_each_pid_task(pgrp, PIDTYPE_PGID, p);
break; break;
case PRIO_USER: case PRIO_USER:
user = current->user; user = current->user;
...@@ -656,6 +660,7 @@ asmlinkage long sys_getpriority(int which, int who) ...@@ -656,6 +660,7 @@ asmlinkage long sys_getpriority(int which, int who)
struct task_struct *g, *p; struct task_struct *g, *p;
struct user_struct *user; struct user_struct *user;
long niceval, retval = -ESRCH; long niceval, retval = -ESRCH;
struct pid *pgrp;
if (which > 2 || which < 0) if (which > 2 || which < 0)
return -EINVAL; return -EINVAL;
...@@ -663,9 +668,10 @@ asmlinkage long sys_getpriority(int which, int who) ...@@ -663,9 +668,10 @@ asmlinkage long sys_getpriority(int which, int who)
read_lock(&tasklist_lock); read_lock(&tasklist_lock);
switch (which) { switch (which) {
case PRIO_PROCESS: case PRIO_PROCESS:
if (!who) if (who)
who = current->pid;
p = find_task_by_pid(who); p = find_task_by_pid(who);
else
p = current;
if (p) { if (p) {
niceval = 20 - task_nice(p); niceval = 20 - task_nice(p);
if (niceval > retval) if (niceval > retval)
...@@ -673,13 +679,15 @@ asmlinkage long sys_getpriority(int which, int who) ...@@ -673,13 +679,15 @@ asmlinkage long sys_getpriority(int which, int who)
} }
break; break;
case PRIO_PGRP: case PRIO_PGRP:
if (!who) if (who)
who = process_group(current); pgrp = find_pid(who);
do_each_task_pid(who, PIDTYPE_PGID, p) { else
pgrp = task_pgrp(current);
do_each_pid_task(pgrp, PIDTYPE_PGID, p) {
niceval = 20 - task_nice(p); niceval = 20 - task_nice(p);
if (niceval > retval) if (niceval > retval)
retval = niceval; retval = niceval;
} while_each_task_pid(who, PIDTYPE_PGID, p); } while_each_pid_task(pgrp, PIDTYPE_PGID, p);
break; break;
case PRIO_USER: case PRIO_USER:
user = current->user; user = current->user;
...@@ -1388,7 +1396,7 @@ asmlinkage long sys_setpgid(pid_t pid, pid_t pgid) ...@@ -1388,7 +1396,7 @@ asmlinkage long sys_setpgid(pid_t pid, pid_t pgid)
if (p->real_parent == group_leader) { if (p->real_parent == group_leader) {
err = -EPERM; err = -EPERM;
if (process_session(p) != process_session(group_leader)) if (task_session(p) != task_session(group_leader))
goto out; goto out;
err = -EACCES; err = -EACCES;
if (p->did_exec) if (p->did_exec)
...@@ -1407,7 +1415,7 @@ asmlinkage long sys_setpgid(pid_t pid, pid_t pgid) ...@@ -1407,7 +1415,7 @@ asmlinkage long sys_setpgid(pid_t pid, pid_t pgid)
struct task_struct *g = struct task_struct *g =
find_task_by_pid_type(PIDTYPE_PGID, pgid); find_task_by_pid_type(PIDTYPE_PGID, pgid);
if (!g || process_session(g) != process_session(group_leader)) if (!g || task_session(g) != task_session(group_leader))
goto out; goto out;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment