diff options
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/acct.c | 4 | ||||
| -rw-r--r-- | kernel/exit.c | 4 | ||||
| -rw-r--r-- | kernel/sched.c | 5 | ||||
| -rw-r--r-- | kernel/sysctl.c | 11 |
4 files changed, 19 insertions, 5 deletions
diff --git a/kernel/acct.c b/kernel/acct.c index 32e39accbb86..78ed87b13de6 100644 --- a/kernel/acct.c +++ b/kernel/acct.c @@ -534,10 +534,8 @@ void acct_process(long exitcode) * acct_update_integrals * - update mm integral fields in task_struct */ -void acct_update_integrals(void) +void acct_update_integrals(struct task_struct *tsk) { - struct task_struct *tsk = current; - if (likely(tsk->mm)) { long delta = tsk->stime - tsk->acct_stimexpd; diff --git a/kernel/exit.c b/kernel/exit.c index f40a50f69850..4173fa7536dc 100644 --- a/kernel/exit.c +++ b/kernel/exit.c @@ -806,8 +806,8 @@ fastcall NORET_TYPE void do_exit(long code) current->comm, current->pid, preempt_count()); - acct_update_integrals(); - update_mem_hiwater(); + acct_update_integrals(tsk); + update_mem_hiwater(tsk); group_dead = atomic_dec_and_test(&tsk->signal->live); if (group_dead) acct_process(code); diff --git a/kernel/sched.c b/kernel/sched.c index 95042b27d30c..f32101f5e31a 100644 --- a/kernel/sched.c +++ b/kernel/sched.c @@ -45,6 +45,7 @@ #include <linux/seq_file.h> #include <linux/syscalls.h> #include <linux/times.h> +#include <linux/acct.h> #include <asm/tlb.h> #include <asm/unistd.h> @@ -2379,6 +2380,10 @@ void account_system_time(struct task_struct *p, int hardirq_offset, cpustat->iowait = cputime64_add(cpustat->iowait, tmp); else cpustat->idle = cputime64_add(cpustat->idle, tmp); + /* Account for system time used */ + acct_update_integrals(p); + /* Update rss highwater mark */ + update_mem_hiwater(p); } /* diff --git a/kernel/sysctl.c b/kernel/sysctl.c index a72dd5677c8f..cc93403f27a7 100644 --- a/kernel/sysctl.c +++ b/kernel/sysctl.c @@ -121,6 +121,8 @@ extern int sysctl_hz_timer; extern int acct_parm[]; #endif +int randomize_va_space = 1; + static int parse_table(int __user *, int, void __user *, size_t __user *, void __user *, size_t, ctl_table *, void **); static int proc_doutsstring(ctl_table *table, int write, struct file *filp, @@ -632,6 +634,15 @@ static ctl_table kern_table[] = { .proc_handler = &proc_dointvec, }, #endif + { + .ctl_name = KERN_RANDOMIZE, + .procname = "randomize_va_space", + .data = &randomize_va_space, + .maxlen = sizeof(int), + .mode = 0644, + .proc_handler = &proc_dointvec, + }, + { .ctl_name = 0 } }; |
