diff options
| author | Ingo Molnar <mingo@kernel.org> | 2015-03-27 04:46:03 -0400 |
|---|---|---|
| committer | Ingo Molnar <mingo@kernel.org> | 2015-03-27 04:46:03 -0400 |
| commit | 072e5a1cfabca7276744d24726e094d85721df5c (patch) | |
| tree | c7237fa143f72273aa8a8179f741c24b9072001c /kernel/events | |
| parent | 294fe0f52a44c6f207211de0686c369a961b5533 (diff) | |
| parent | d525211f9d1be8b523ec7633f080f2116f5ea536 (diff) | |
Merge branch 'perf/urgent' into perf/core, to pick up fixes and to refresh the tree
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'kernel/events')
| -rw-r--r-- | kernel/events/core.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/kernel/events/core.c b/kernel/events/core.c index 8bb20cc39a92..9a5f339a0e2d 100644 --- a/kernel/events/core.c +++ b/kernel/events/core.c | |||
| @@ -3610,7 +3610,7 @@ static void put_event(struct perf_event *event) | |||
| 3610 | ctx = perf_event_ctx_lock_nested(event, SINGLE_DEPTH_NESTING); | 3610 | ctx = perf_event_ctx_lock_nested(event, SINGLE_DEPTH_NESTING); |
| 3611 | WARN_ON_ONCE(ctx->parent_ctx); | 3611 | WARN_ON_ONCE(ctx->parent_ctx); |
| 3612 | perf_remove_from_context(event, true); | 3612 | perf_remove_from_context(event, true); |
| 3613 | mutex_unlock(&ctx->mutex); | 3613 | perf_event_ctx_unlock(event, ctx); |
| 3614 | 3614 | ||
| 3615 | _free_event(event); | 3615 | _free_event(event); |
| 3616 | } | 3616 | } |
| @@ -4593,6 +4593,13 @@ static void perf_pending_event(struct irq_work *entry) | |||
| 4593 | { | 4593 | { |
| 4594 | struct perf_event *event = container_of(entry, | 4594 | struct perf_event *event = container_of(entry, |
| 4595 | struct perf_event, pending); | 4595 | struct perf_event, pending); |
| 4596 | int rctx; | ||
| 4597 | |||
| 4598 | rctx = perf_swevent_get_recursion_context(); | ||
| 4599 | /* | ||
| 4600 | * If we 'fail' here, that's OK, it means recursion is already disabled | ||
| 4601 | * and we won't recurse 'further'. | ||
| 4602 | */ | ||
| 4596 | 4603 | ||
| 4597 | if (event->pending_disable) { | 4604 | if (event->pending_disable) { |
| 4598 | event->pending_disable = 0; | 4605 | event->pending_disable = 0; |
| @@ -4603,6 +4610,9 @@ static void perf_pending_event(struct irq_work *entry) | |||
| 4603 | event->pending_wakeup = 0; | 4610 | event->pending_wakeup = 0; |
| 4604 | perf_event_wakeup(event); | 4611 | perf_event_wakeup(event); |
| 4605 | } | 4612 | } |
| 4613 | |||
| 4614 | if (rctx >= 0) | ||
| 4615 | perf_swevent_put_recursion_context(rctx); | ||
| 4606 | } | 4616 | } |
| 4607 | 4617 | ||
| 4608 | /* | 4618 | /* |
