diff --git a/kernel/perf_event.c b/kernel/perf_event.c index 77641ae6b23fa1f581e833b28af3a8d5a31fb2c3..94e1b28333aed85c62513a6bce62d73bc12f4588 100644 --- a/kernel/perf_event.c +++ b/kernel/perf_event.c @@ -4079,8 +4079,7 @@ static void cpu_clock_perf_event_update(struct perf_event *event) u64 now; now = cpu_clock(cpu); - prev = atomic64_read(&event->hw.prev_count); - atomic64_set(&event->hw.prev_count, now); + prev = atomic64_xchg(&event->hw.prev_count, now); atomic64_add(now - prev, &event->count); }