diff options
| author | Jan Engelmohr <jan.engelmohr@mailbox.tu-dresden.de> | 2016-07-26 18:11:06 +0200 |
|---|---|---|
| committer | Moyster <oysterized@gmail.com> | 2016-08-26 16:00:05 +0200 |
| commit | 42fb8800204306978c6fb8f99ef68b8c1e895fd2 (patch) | |
| tree | 1b90dc930c732604ec6ab4d26a7d366264d0d292 /kernel/events | |
| parent | 66b3b5f4bb0c4811f364332d0268fbc047835d71 (diff) | |
3.10.73 -> 3.10.74
Diffstat (limited to 'kernel/events')
| -rw-r--r-- | kernel/events/core.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/kernel/events/core.c b/kernel/events/core.c index 7bf4d519c..7daf52c34 100644 --- a/kernel/events/core.c +++ b/kernel/events/core.c @@ -4007,6 +4007,13 @@ static void perf_pending_event(struct irq_work *entry) { struct perf_event *event = container_of(entry, struct perf_event, pending); + int rctx; + + rctx = perf_swevent_get_recursion_context(); + /* + * If we 'fail' here, that's OK, it means recursion is already disabled + * and we won't recurse 'further'. + */ if (event->pending_disable) { event->pending_disable = 0; @@ -4017,6 +4024,9 @@ static void perf_pending_event(struct irq_work *entry) event->pending_wakeup = 0; perf_event_wakeup(event); } + + if (rctx >= 0) + perf_swevent_put_recursion_context(rctx); } /* |
