Messages in this thread Patch in this message | | | Date | Mon, 29 Oct 2012 16:27:29 -0400 | From | Steven Rostedt <> | Subject | [PATCH 18/32] nohz/cpuset: Flush cputimes for getrusage() and times() syscalls |
| |
From: Frederic Weisbecker <fweisbec@gmail.com>
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 file changed, 6 insertions(+)
diff --git a/kernel/sys.c b/kernel/sys.c index e6e0ece..b57ea9a 100644 --- a/kernel/sys.c +++ b/kernel/sys.c @@ -47,6 +47,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? */ @@ -1045,6 +1046,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; @@ -1710,6 +1713,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.10.4
| |