diff options
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/acct.c | 4 | ||||
| -rw-r--r-- | kernel/audit.c | 6 | ||||
| -rw-r--r-- | kernel/exit.c | 4 | ||||
| -rw-r--r-- | kernel/sched.c | 5 | ||||
| -rw-r--r-- | kernel/sysctl.c | 11 |
5 files changed, 22 insertions, 8 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/audit.c b/kernel/audit.c index 9b48512a4cf5..9e9471002eae 100644 --- a/kernel/audit.c +++ b/kernel/audit.c @@ -360,7 +360,7 @@ static int audit_receive_msg(struct sk_buff *skb, struct nlmsghdr *nlh) status_set.backlog_limit = audit_backlog_limit; status_set.lost = atomic_read(&audit_lost); status_set.backlog = atomic_read(&audit_backlog); - audit_send_reply(pid, seq, AUDIT_GET, 0, 0, + audit_send_reply(NETLINK_CB(skb).pid, seq, AUDIT_GET, 0, 0, &status_set, sizeof(status_set)); break; case AUDIT_SET: @@ -407,8 +407,8 @@ static int audit_receive_msg(struct sk_buff *skb, struct nlmsghdr *nlh) /* fallthrough */ case AUDIT_LIST: #ifdef CONFIG_AUDITSYSCALL - err = audit_receive_filter(nlh->nlmsg_type, pid, uid, seq, - data); + err = audit_receive_filter(nlh->nlmsg_type, NETLINK_CB(skb).pid, + uid, seq, data); #else err = -EOPNOTSUPP; #endif 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 } }; |
