| From | Frederic Weisbecker <> | Subject | [PATCH 23/41] nohz/cpuset: Flush cputimes for getrusage() and times() syscalls | Date | Tue, 1 May 2012 01:54:57 +0200 |
| |
Both syscalls need to iterate through the thread group to get the cputimes. As some threads of the group may be running on nohz cpuset, we need to flush the cputimes there.
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com> Cc: Alessio Igor Bogani <abogani@kernel.org> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: Avi Kivity <avi@redhat.com> Cc: Chris Metcalf <cmetcalf@tilera.com> Cc: Christoph Lameter <cl@linux.com> Cc: Daniel Lezcano <daniel.lezcano@linaro.org> Cc: Geoff Levand <geoff@infradead.org> Cc: Gilad Ben Yossef <gilad@benyossef.com> Cc: Hakan Akkan <hakanakkan@gmail.com> Cc: Ingo Molnar <mingo@kernel.org> Cc: Kevin Hilman <khilman@ti.com> Cc: Max Krasnyansky <maxk@qualcomm.com> Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Stephen Hemminger <shemminger@vyatta.com> Cc: Steven Rostedt <rostedt@goodmis.org> Cc: Sven-Thorsten Dietrich <thebigcorporation@gmail.com> Cc: Thomas Gleixner <tglx@linutronix.de> --- kernel/sys.c | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-)
diff --git a/kernel/sys.c b/kernel/sys.c index 4070153..5b3e880 100644 --- a/kernel/sys.c +++ b/kernel/sys.c @@ -45,6 +45,7 @@ #include <linux/syscalls.h> #include <linux/kprobes.h> #include <linux/user_namespace.h> +#include <linux/cpuset.h> #include <linux/kmsg_dump.h> /* Move somewhere else to avoid recompiling? */ @@ -950,6 +951,8 @@ void do_sys_times(struct tms *tms) { cputime_t tgutime, tgstime, cutime, cstime; + cpuset_nohz_flush_cputimes(); + spin_lock_irq(¤t->sighand->siglock); thread_group_times(current, &tgutime, &tgstime); cutime = current->signal->cutime; @@ -1614,6 +1617,9 @@ static void k_getrusage(struct task_struct *p, int who, struct rusage *r) goto out; } + /* For thread_group_times */ + cpuset_nohz_flush_cputimes(); + if (!lock_task_sighand(p, &flags)) return; -- 1.7.5.4
|