perf: Do not check PERF_EVENT_STATE_EXIT on syscall read path
authorJiri Olsa <jolsa@redhat.com>
Mon, 8 Sep 2014 14:31:07 +0000 (16:31 +0200)
committerIngo Molnar <mingo@kernel.org>
Tue, 16 Sep 2014 08:30:36 +0000 (10:30 +0200)
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@google.com>
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Acked-by: Stephane Eranian <eranian@google.com>
Acked-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Stephane Eranian <eranian@google.com>
Cc: David Ahern <dsahern@gmail.com>
Link: http://lkml.kernel.org/r/20140908143107.GG17728@krava.brq.redhat.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
kernel/events/core.c

index f917dec6f897a1fbea52b2375295cd023bd8aca3..733c61636f0d6b216972bb312c48814496800f3a 100644 (file)
@@ -3601,8 +3601,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)