diff options
author | Jiri Slaby <jirislaby@gmail.com> | 2009-08-28 08:05:12 -0400 |
---|---|---|
committer | Jiri Slaby <jirislaby@gmail.com> | 2010-07-16 03:48:45 -0400 |
commit | 5ab46b345e418747b3a52f0892680c0745c4223c (patch) | |
tree | d7453221b7fc2764a7405b48b73b4ac7bf7a317a | |
parent | 8fd00b4d7014b00448eb33cf0590815304769798 (diff) |
rlimits: add task_struct to update_rlimit_cpu
Add task_struct as a parameter to update_rlimit_cpu to be able to set
rlimit_cpu of different task than current.
Signed-off-by: Jiri Slaby <jirislaby@gmail.com>
Acked-by: James Morris <jmorris@namei.org>
-rw-r--r-- | include/linux/posix-timers.h | 2 | ||||
-rw-r--r-- | kernel/posix-cpu-timers.c | 8 | ||||
-rw-r--r-- | kernel/sys.c | 2 | ||||
-rw-r--r-- | security/selinux/hooks.c | 3 |
4 files changed, 8 insertions, 7 deletions
diff --git a/include/linux/posix-timers.h b/include/linux/posix-timers.h index 4f71bf4e628c..3e23844a6990 100644 --- a/include/linux/posix-timers.h +++ b/include/linux/posix-timers.h | |||
@@ -117,6 +117,6 @@ void set_process_cpu_timer(struct task_struct *task, unsigned int clock_idx, | |||
117 | 117 | ||
118 | long clock_nanosleep_restart(struct restart_block *restart_block); | 118 | long clock_nanosleep_restart(struct restart_block *restart_block); |
119 | 119 | ||
120 | void update_rlimit_cpu(unsigned long rlim_new); | 120 | void update_rlimit_cpu(struct task_struct *task, unsigned long rlim_new); |
121 | 121 | ||
122 | #endif | 122 | #endif |
diff --git a/kernel/posix-cpu-timers.c b/kernel/posix-cpu-timers.c index 9829646d399c..0513900995ce 100644 --- a/kernel/posix-cpu-timers.c +++ b/kernel/posix-cpu-timers.c | |||
@@ -16,13 +16,13 @@ | |||
16 | * siglock protection since other code may update expiration cache as | 16 | * siglock protection since other code may update expiration cache as |
17 | * well. | 17 | * well. |
18 | */ | 18 | */ |
19 | void update_rlimit_cpu(unsigned long rlim_new) | 19 | void update_rlimit_cpu(struct task_struct *task, unsigned long rlim_new) |
20 | { | 20 | { |
21 | cputime_t cputime = secs_to_cputime(rlim_new); | 21 | cputime_t cputime = secs_to_cputime(rlim_new); |
22 | 22 | ||
23 | spin_lock_irq(¤t->sighand->siglock); | 23 | spin_lock_irq(&task->sighand->siglock); |
24 | set_process_cpu_timer(current, CPUCLOCK_PROF, &cputime, NULL); | 24 | set_process_cpu_timer(task, CPUCLOCK_PROF, &cputime, NULL); |
25 | spin_unlock_irq(¤t->sighand->siglock); | 25 | spin_unlock_irq(&task->sighand->siglock); |
26 | } | 26 | } |
27 | 27 | ||
28 | static int check_clock(const clockid_t which_clock) | 28 | static int check_clock(const clockid_t which_clock) |
diff --git a/kernel/sys.c b/kernel/sys.c index 1ba4522689d4..f5183b08adfc 100644 --- a/kernel/sys.c +++ b/kernel/sys.c | |||
@@ -1320,7 +1320,7 @@ SYSCALL_DEFINE2(setrlimit, unsigned int, resource, struct rlimit __user *, rlim) | |||
1320 | if (new_rlim.rlim_cur == RLIM_INFINITY) | 1320 | if (new_rlim.rlim_cur == RLIM_INFINITY) |
1321 | goto out; | 1321 | goto out; |
1322 | 1322 | ||
1323 | update_rlimit_cpu(new_rlim.rlim_cur); | 1323 | update_rlimit_cpu(current, new_rlim.rlim_cur); |
1324 | out: | 1324 | out: |
1325 | return 0; | 1325 | return 0; |
1326 | } | 1326 | } |
diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c index e3ce6b4127cc..afb18a9ebba1 100644 --- a/security/selinux/hooks.c +++ b/security/selinux/hooks.c | |||
@@ -2338,7 +2338,8 @@ static void selinux_bprm_committing_creds(struct linux_binprm *bprm) | |||
2338 | initrlim = init_task.signal->rlim + i; | 2338 | initrlim = init_task.signal->rlim + i; |
2339 | rlim->rlim_cur = min(rlim->rlim_max, initrlim->rlim_cur); | 2339 | rlim->rlim_cur = min(rlim->rlim_max, initrlim->rlim_cur); |
2340 | } | 2340 | } |
2341 | update_rlimit_cpu(current->signal->rlim[RLIMIT_CPU].rlim_cur); | 2341 | update_rlimit_cpu(current, |
2342 | current->signal->rlim[RLIMIT_CPU].rlim_cur); | ||
2342 | } | 2343 | } |
2343 | } | 2344 | } |
2344 | 2345 | ||