From 7c3fdbb82c67168e2efd0f97a1b37222d5b21b9a Mon Sep 17 00:00:00 2001 From: Will Deacon Date: Wed, 17 Oct 2012 12:01:34 +0100 Subject: [PATCH] --- yaml --- r: 334831 b: refs/heads/master c: 3581fe0ef37ce12ac7a4f74831168352ae848edc h: refs/heads/master i: 334829: 376ece5b9554b58571e237b0d1670d5918436dae 334827: f300c7fb1d3cec2484710b185edb161674c93040 334823: be8927b756e00e86733a8d0804fa9ce04c886d11 334815: d9e8f5d43f1755aa1e8820abd1e09b6cb72e7bd6 v: v3 --- [refs] | 2 +- trunk/arch/arm/kernel/perf_event.c | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index cc504a6b077a..16aa22143b0f 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 2456f44dd7a9aaffc2cd21a13f78198b3d94da08 +refs/heads/master: 3581fe0ef37ce12ac7a4f74831168352ae848edc diff --git a/trunk/arch/arm/kernel/perf_event.c b/trunk/arch/arm/kernel/perf_event.c index 93971b1a4f0b..53c0304b734a 100644 --- a/trunk/arch/arm/kernel/perf_event.c +++ b/trunk/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);