Peter Zijlstra f6ab91add6 perf: Fix signed comparison in perf_adjust_period()
Frederic reported that frequency driven swevents didn't work properly
and even caused a division-by-zero error.

It turns out there are two bugs, the division-by-zero comes from a
failure to deal with that in perf_calculate_period().

The other was more interesting and turned out to be a wrong comparison
in perf_adjust_period(). The comparison was between an s64 and u64 and
got implicitly converted to an unsigned comparison. The problem is
that period_left is typically < 0, so it ended up being always true.

Cure this by making the local period variables s64.

Reported-by: Frederic Weisbecker <fweisbec@gmail.com>
Tested-by: Frederic Weisbecker <fweisbec@gmail.com>
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: <stable@kernel.org>
LKML-Reference: <new-submission>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
2010-06-08 18:43:00 +02:00
..
2009-09-21 14:29:21 +02:00
2010-05-18 08:57:00 +10:00
2009-06-24 00:02:38 -04:00
2010-05-19 11:48:18 -07:00
2009-09-18 09:48:52 -07:00
2010-05-26 16:15:37 +02:00
2010-05-11 17:33:42 -07:00
2010-05-19 08:18:44 +02:00
2010-05-27 09:12:53 -07:00
2010-05-17 00:21:03 +02:00
2010-02-10 17:47:17 -08:00
2010-05-11 12:01:10 -07:00
2010-04-02 20:12:05 +02:00
2010-03-12 15:52:32 -08:00
2010-05-24 11:50:38 +02:00
2010-03-06 11:26:23 -08:00
2009-09-23 18:13:10 -07:00
2010-05-21 09:37:29 -07:00
2010-05-10 08:48:39 +02:00
2009-06-18 13:03:55 -07:00