diff options
-rw-r--r-- | include/linux/perf_event.h | 2 | ||||
-rw-r--r-- | kernel/perf_event.c | 4 |
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; |