]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
sparc64: Fix for perf event counts sometimes reported as negative numbers
authorDave Aldridge <david.j.aldridge@oracle.com>
Thu, 21 Jan 2016 14:17:11 +0000 (06:17 -0800)
committerAllen Pais <allen.pais@oracle.com>
Thu, 4 Feb 2016 13:11:05 +0000 (18:41 +0530)
Use an unsigned number to prevent sign extension in the calculation
to work out the difference between the previous and the current
count obtained from the perfomance instrumentation counters.

Orabug: 22607658

Signed-off-by: Dave Aldridge <david.j.aldridge@oracle.com>
(cherry picked from commit b0fb8b78a2cc452512296ce5bec1fa927ebf867e)
(cherry picked from commit da8cc212a978a1f54cadadeaabed46d9d5f839b3)
Signed-off-by: Allen Pais <allen.pais@oracle.com>
arch/sparc/kernel/perf_event.c

index 6be35b1310393d8fffab3e9a11d20034f035d137..d5e46143f99c805b0fe5d547a0424f86aad4b8f7 100644 (file)
@@ -862,8 +862,7 @@ static u64 sparc_perf_event_update(struct perf_event *event,
                                   struct hw_perf_event *hwc, int idx)
 {
        int shift = 64 - 32;
-       u64 prev_raw_count, new_raw_count;
-       s64 delta;
+       u64 prev_raw_count, new_raw_count, delta;
 
 again:
        prev_raw_count = local64_read(&hwc->prev_count);