aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/linux/perf_event.h2
-rw-r--r--kernel/perf_event.c4
2 files changed, 3 insertions, 3 deletions
diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h
index 7cd7b356447d..7098ebbb3b3a 100644
--- a/include/linux/perf_event.h
+++ b/include/linux/perf_event.h
@@ -599,7 +599,7 @@ struct perf_mmap_data {
599 local_t head; /* write position */ 599 local_t head; /* write position */
600 local_t nest; /* nested writers */ 600 local_t nest; /* nested writers */
601 local_t events; /* event limit */ 601 local_t events; /* event limit */
602 local_t wakeup; /* needs a wakeup */ 602 local_t wakeup; /* wakeup stamp */
603 local_t lost; /* nr records lost */ 603 local_t lost; /* nr records lost */
604 604
605 long watermark; /* wakeup watermark */ 605 long watermark; /* wakeup watermark */
diff --git a/kernel/perf_event.c b/kernel/perf_event.c
index 7a932526946f..1531e0b409a5 100644
--- a/kernel/perf_event.c
+++ b/kernel/perf_event.c
@@ -3056,8 +3056,8 @@ int perf_output_begin(struct perf_output_handle *handle,
3056 handle->offset = offset; 3056 handle->offset = offset;
3057 handle->head = head; 3057 handle->head = head;
3058 3058
3059 if (head - tail > data->watermark) 3059 if (head - local_read(&data->wakeup) > data->watermark)
3060 local_inc(&data->wakeup); 3060 local_add(data->watermark, &data->wakeup);
3061 3061
3062 if (have_lost) { 3062 if (have_lost) {
3063 lost_event.header.type = PERF_RECORD_LOST; 3063 lost_event.header.type = PERF_RECORD_LOST;