diff options
Diffstat (limited to 'kernel/sys.c')
-rw-r--r-- | kernel/sys.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/kernel/sys.c b/kernel/sys.c index cdb7e9457ba6..872271ccc384 100644 --- a/kernel/sys.c +++ b/kernel/sys.c | |||
@@ -14,6 +14,7 @@ | |||
14 | #include <linux/prctl.h> | 14 | #include <linux/prctl.h> |
15 | #include <linux/highuid.h> | 15 | #include <linux/highuid.h> |
16 | #include <linux/fs.h> | 16 | #include <linux/fs.h> |
17 | #include <linux/resource.h> | ||
17 | #include <linux/kernel.h> | 18 | #include <linux/kernel.h> |
18 | #include <linux/kexec.h> | 19 | #include <linux/kexec.h> |
19 | #include <linux/workqueue.h> | 20 | #include <linux/workqueue.h> |
@@ -29,6 +30,7 @@ | |||
29 | #include <linux/signal.h> | 30 | #include <linux/signal.h> |
30 | #include <linux/cn_proc.h> | 31 | #include <linux/cn_proc.h> |
31 | #include <linux/getcpu.h> | 32 | #include <linux/getcpu.h> |
33 | #include <linux/task_io_accounting_ops.h> | ||
32 | 34 | ||
33 | #include <linux/compat.h> | 35 | #include <linux/compat.h> |
34 | #include <linux/syscalls.h> | 36 | #include <linux/syscalls.h> |
@@ -658,7 +660,7 @@ asmlinkage long sys_setpriority(int which, int who, int niceval) | |||
658 | int error = -EINVAL; | 660 | int error = -EINVAL; |
659 | struct pid *pgrp; | 661 | struct pid *pgrp; |
660 | 662 | ||
661 | if (which > 2 || which < 0) | 663 | if (which > PRIO_USER || which < PRIO_PROCESS) |
662 | goto out; | 664 | goto out; |
663 | 665 | ||
664 | /* normalize: avoid signed division (rounding problems) */ | 666 | /* normalize: avoid signed division (rounding problems) */ |
@@ -722,7 +724,7 @@ asmlinkage long sys_getpriority(int which, int who) | |||
722 | long niceval, retval = -ESRCH; | 724 | long niceval, retval = -ESRCH; |
723 | struct pid *pgrp; | 725 | struct pid *pgrp; |
724 | 726 | ||
725 | if (which > 2 || which < 0) | 727 | if (which > PRIO_USER || which < PRIO_PROCESS) |
726 | return -EINVAL; | 728 | return -EINVAL; |
727 | 729 | ||
728 | read_lock(&tasklist_lock); | 730 | read_lock(&tasklist_lock); |
@@ -1486,7 +1488,7 @@ asmlinkage long sys_setpgid(pid_t pid, pid_t pgid) | |||
1486 | if (process_group(p) != pgid) { | 1488 | if (process_group(p) != pgid) { |
1487 | detach_pid(p, PIDTYPE_PGID); | 1489 | detach_pid(p, PIDTYPE_PGID); |
1488 | p->signal->pgrp = pgid; | 1490 | p->signal->pgrp = pgid; |
1489 | attach_pid(p, PIDTYPE_PGID, pgid); | 1491 | attach_pid(p, PIDTYPE_PGID, find_pid(pgid)); |
1490 | } | 1492 | } |
1491 | 1493 | ||
1492 | err = 0; | 1494 | err = 0; |
@@ -2082,6 +2084,8 @@ static void k_getrusage(struct task_struct *p, int who, struct rusage *r) | |||
2082 | r->ru_nivcsw = p->signal->cnivcsw; | 2084 | r->ru_nivcsw = p->signal->cnivcsw; |
2083 | r->ru_minflt = p->signal->cmin_flt; | 2085 | r->ru_minflt = p->signal->cmin_flt; |
2084 | r->ru_majflt = p->signal->cmaj_flt; | 2086 | r->ru_majflt = p->signal->cmaj_flt; |
2087 | r->ru_inblock = p->signal->cinblock; | ||
2088 | r->ru_oublock = p->signal->coublock; | ||
2085 | 2089 | ||
2086 | if (who == RUSAGE_CHILDREN) | 2090 | if (who == RUSAGE_CHILDREN) |
2087 | break; | 2091 | break; |
@@ -2093,6 +2097,8 @@ static void k_getrusage(struct task_struct *p, int who, struct rusage *r) | |||
2093 | r->ru_nivcsw += p->signal->nivcsw; | 2097 | r->ru_nivcsw += p->signal->nivcsw; |
2094 | r->ru_minflt += p->signal->min_flt; | 2098 | r->ru_minflt += p->signal->min_flt; |
2095 | r->ru_majflt += p->signal->maj_flt; | 2099 | r->ru_majflt += p->signal->maj_flt; |
2100 | r->ru_inblock += p->signal->inblock; | ||
2101 | r->ru_oublock += p->signal->oublock; | ||
2096 | t = p; | 2102 | t = p; |
2097 | do { | 2103 | do { |
2098 | utime = cputime_add(utime, t->utime); | 2104 | utime = cputime_add(utime, t->utime); |
@@ -2101,6 +2107,8 @@ static void k_getrusage(struct task_struct *p, int who, struct rusage *r) | |||
2101 | r->ru_nivcsw += t->nivcsw; | 2107 | r->ru_nivcsw += t->nivcsw; |
2102 | r->ru_minflt += t->min_flt; | 2108 | r->ru_minflt += t->min_flt; |
2103 | r->ru_majflt += t->maj_flt; | 2109 | r->ru_majflt += t->maj_flt; |
2110 | r->ru_inblock += task_io_get_inblock(t); | ||
2111 | r->ru_oublock += task_io_get_oublock(t); | ||
2104 | t = next_thread(t); | 2112 | t = next_thread(t); |
2105 | } while (t != p); | 2113 | } while (t != p); |
2106 | break; | 2114 | break; |