diff --git a/kernel/events/core.c b/kernel/events/core.c index 39cf0040e6df..e1e546d742be 100644 --- a/kernel/events/core.c +++ b/kernel/events/core.c @@ -3714,7 +3714,11 @@ static void perf_adjust_period(struct perf_event *event, u64 nsec, u64 count, bo period = perf_calculate_period(event, nsec, count); delta = (s64)(period - hwc->sample_period); - delta = (delta + 7) / 8; /* low pass filter */ + if (delta >= 0) + delta += 7; + else + delta -= 7; + delta /= 8; /* low pass filter */ sample_period = hwc->sample_period + delta;