Re: [PATCH] perf: Do not check PERF_EVENT_STATE_EXIT on syscall read path

From: Peter Zijlstra
Date: Mon Sep 08 2014 - 11:22:14 EST


On Mon, Sep 08, 2014 at 04:31:07PM +0200, Jiri Olsa wrote:
> Revert PERF_EVENT_STATE_EXIT check on read syscall path.
> It breaks standard way to read counter, which is to open
> the counter, wait for the monitored process to die and
> read the counter.
>
> Reported-by: Stephane Eranian <eranian@xxxxxxxxxx>
> Acked-by: Stephane Eranian <eranian@xxxxxxxxxx>
> Cc: Arnaldo Carvalho de Melo <acme@xxxxxxxxxx>
> Cc: Frederic Weisbecker <fweisbec@xxxxxxxxx>
> Cc: Ingo Molnar <mingo@xxxxxxxxxx>
> Cc: Paul Mackerras <paulus@xxxxxxxxx>
> Cc: Peter Zijlstra <a.p.zijlstra@xxxxxxxxx>
> Cc: Stephane Eranian <eranian@xxxxxxxxxx>
> Signed-off-by: Jiri Olsa <jolsa@xxxxxxxxxx>

Thanks!

> ---
> kernel/events/core.c | 3 +--
> 1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/kernel/events/core.c b/kernel/events/core.c
> index d8cb4d21a346..6d1c9ce1643e 100644
> --- a/kernel/events/core.c
> +++ b/kernel/events/core.c
> @@ -3600,8 +3600,7 @@ perf_read_hw(struct perf_event *event, char __user *buf, size_t count)
> * error state (i.e. because it was pinned but it couldn't be
> * scheduled on to the CPU at some point).
> */
> - if ((event->state == PERF_EVENT_STATE_ERROR) ||
> - (event->state == PERF_EVENT_STATE_EXIT))
> + if (event->state == PERF_EVENT_STATE_ERROR)
> return 0;
>
> if (count < event->read_size)
> --
> 1.8.3.1
>

Attachment: pgpk7RfZe2rcY.pgp
Description: PGP signature