diff options
| -rw-r--r-- | arch/arm/kernel/perf_event.c | 4 | 
1 files changed, 4 insertions, 0 deletions
diff --git a/arch/arm/kernel/perf_event.c b/arch/arm/kernel/perf_event.c index 93971b1a4f0..53c0304b734 100644 --- a/arch/arm/kernel/perf_event.c +++ b/arch/arm/kernel/perf_event.c @@ -96,6 +96,10 @@ armpmu_event_set_period(struct perf_event *event,  	s64 period = hwc->sample_period;  	int ret = 0; +	/* The period may have been changed by PERF_EVENT_IOC_PERIOD */ +	if (unlikely(period != hwc->last_period)) +		left = period - (hwc->last_period - left); +  	if (unlikely(left <= -period)) {  		left = period;  		local64_set(&hwc->period_left, left);  |