sched_clock: prevent scd->clock from moving backwards
authorDave Kleikamp <shaggy@linux.vnet.ibm.com>
Sun, 26 Oct 2008 22:20:14 +0000 (18:20 -0400)
committerGreg Kroah-Hartman <gregkh@suse.de>
Fri, 7 Nov 2008 03:05:50 +0000 (19:05 -0800)
commit5e55aa8db085dad1aabb4574c73c23c7ae571e7b
tree7a22ee8f6d5674b19ab19e64be8f499e17ffe632
parent612f39d5e7baeb0518cfe50d53e37e14c0ca1475
sched_clock: prevent scd->clock from moving backwards

commit 5b7dba4ff834259a5623e03a565748704a8fe449 upstream

sched_clock: prevent scd->clock from moving backwards

When sched_clock_cpu() couples the clocks between two cpus, it may
increment scd->clock beyond the GTOD tick window that __update_sched_clock()
uses to clamp the clock.  A later call to __update_sched_clock() may move
the clock back to scd->tick_gtod + TICK_NSEC, violating the clock's
monotonic property.

This patch ensures that scd->clock will not be set backward.

Signed-off-by: Dave Kleikamp <shaggy@linux.vnet.ibm.com>
Acked-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Cc: Chuck Ebbert <cebbert@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
kernel/sched_clock.c