]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blame - releases/3.0.1/perf-fix-software-event-overflow.patch
5.1-stable patches
[thirdparty/kernel/stable-queue.git] / releases / 3.0.1 / perf-fix-software-event-overflow.patch
CommitLineData
632d9a26
GKH
1From a.p.zijlstra@chello.nl Tue Aug 2 09:32:36 2011
2From: Peter Zijlstra <a.p.zijlstra@chello.nl>
3Date: Thu, 28 Jul 2011 20:47:10 +0200
4Subject: perf: Fix software event overflow
5To: Vince Weaver <vweaver1@eecs.utk.edu>
6Cc: Ingo Molnar <mingo@elte.hu>, Paul Mackerras <paulus@samba.org>, linux-kernel@vger.kernel.org, Arnaldo Carvalho de Melo <acme@ghostprotocols.net>, stable <stable@kernel.org>
7Message-ID: <1311878830.2617.373.camel@laptop>
8
9From: Peter Zijlstra <a.p.zijlstra@chello.nl>
10
11The below patch is for -stable only, upstream has a much larger patch
12that contains the below hunk in commit a8b0ca17b80e92faab46ee7179ba9e99ccb61233
13
14Vince found that under certain circumstances software event overflows
15go wrong and deadlock. Avoid trying to delete a timer from the timer
16callback.
17
18Reported-by: Vince Weaver <vweaver1@eecs.utk.edu>
19Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
20Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
21
22---
23 kernel/events/core.c | 7 ++-----
24 1 file changed, 2 insertions(+), 5 deletions(-)
25
26--- a/kernel/events/core.c
27+++ b/kernel/events/core.c
28@@ -5016,11 +5016,8 @@ static int __perf_event_overflow(struct
29 if (events && atomic_dec_and_test(&event->event_limit)) {
30 ret = 1;
31 event->pending_kill = POLL_HUP;
32- if (nmi) {
33- event->pending_disable = 1;
34- irq_work_queue(&event->pending);
35- } else
36- perf_event_disable(event);
37+ event->pending_disable = 1;
38+ irq_work_queue(&event->pending);
39 }
40
41 if (event->overflow_handler)