aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/perf_event.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/perf_event.c')
-rw-r--r--kernel/perf_event.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/kernel/perf_event.c b/kernel/perf_event.c
index 1f98c78c3343..7e3bcf1a29f0 100644
--- a/kernel/perf_event.c
+++ b/kernel/perf_event.c
@@ -2917,6 +2917,7 @@ static void perf_output_get_handle(struct perf_output_handle *handle)
2917 2917
2918 preempt_disable(); 2918 preempt_disable();
2919 local_inc(&data->nest); 2919 local_inc(&data->nest);
2920 handle->wakeup = local_read(&data->wakeup);
2920} 2921}
2921 2922
2922static void perf_output_put_handle(struct perf_output_handle *handle) 2923static void perf_output_put_handle(struct perf_output_handle *handle)
@@ -2950,7 +2951,7 @@ again:
2950 goto again; 2951 goto again;
2951 } 2952 }
2952 2953
2953 if (local_xchg(&data->wakeup, 0)) 2954 if (handle->wakeup != local_read(&data->wakeup))
2954 perf_output_wakeup(handle); 2955 perf_output_wakeup(handle);
2955 2956
2956 preempt_enable(); 2957 preempt_enable();