mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-17 20:25:19 +00:00
[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: Eric W. Biederman <ebiederm@xmission.com> Cc: Alan Cox <alan@lxorguk.ukuu.org.uk> Cc: Oleg Nesterov <oleg@tv-sign.ru> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
ab521dc0f8
commit
41487c65bf
3 changed files with 41 additions and 25 deletions
18
fs/ioprio.c
18
fs/ioprio.c
|
@ -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)
|
||||||
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)
|
||||||
{
|
{
|
||||||
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)
|
||||||
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)
|
||||||
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 @@ out:
|
||||||
* 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,
|
||||||
}
|
}
|
||||||
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;
|
||||||
|
|
40
kernel/sys.c
40
kernel/sys.c
|
@ -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)
|
||||||
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)
|
||||||
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)
|
||||||
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)
|
||||||
}
|
}
|
||||||
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)
|
||||||
|
|
||||||
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)
|
||||||
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue