Peter Zijlstra
ef54c1a476
perf: Rework perf_event_exit_event()
...
Make perf_event_exit_event() more robust, such that we can use it from
other contexts. Specifically the up and coming remove_on_exec.
For this to work we need to address a few issues. Remove_on_exec will
not destroy the entire context, so we cannot rely on TASK_TOMBSTONE to
disable event_function_call() and we thus have to use
perf_remove_from_context().
When using perf_remove_from_context(), there's two races to consider.
The first is against close(), where we can have concurrent tear-down
of the event. The second is against child_list iteration, which should
not find a half baked event.
To address this, teach perf_remove_from_context() to special case
!ctx->is_active and about DETACH_CHILD.
[ elver@google.com: fix racing parent/child exit in sync_child_event(). ]
Signed-off-by: Marco Elver <elver@google.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://lkml.kernel.org/r/20210408103605.1676875-2-elver@google.com
2021-04-16 16:32:40 +02:00
..
2021-03-01 11:45:04 +01:00
2021-02-22 09:45:23 -08:00
2021-02-16 14:47:46 -08:00
2021-02-24 10:25:37 -08:00
2021-03-08 11:59:17 +01:00
2021-02-24 10:35:29 -08:00
2021-02-22 10:27:48 -08:00
2021-02-23 15:05:10 -08:00
2021-03-10 12:22:26 +00:00
2021-03-13 11:27:30 -08:00
2021-02-21 14:44:44 -08:00
2021-03-02 15:33:00 +01:00
2021-02-22 09:27:18 -08:00
2021-02-22 13:29:55 -08:00
2021-02-25 10:17:31 -08:00
2021-03-08 11:59:17 +01:00
2021-03-08 15:16:30 -08:00
2021-03-11 07:47:48 -07:00
2021-02-26 09:41:04 -08:00
2021-03-01 10:15:07 -07:00
2021-02-23 09:54:51 -07:00
2021-02-16 15:23:23 -08:00
2021-02-26 09:41:03 -08:00
2021-02-17 14:07:48 +01:00
2021-02-22 09:45:23 -08:00
2021-03-13 11:27:30 -08:00
2021-03-11 14:40:50 +09:00
2021-03-10 09:16:09 +01:00
2021-02-28 12:06:45 -08:00
2021-02-26 09:41:03 -08:00
2021-02-26 13:59:32 -08:00
2021-02-24 21:05:28 +05:30
2021-02-24 21:04:54 +05:30
2021-02-24 09:54:24 -08:00
2021-02-26 13:59:32 -08:00
2021-02-17 14:12:42 +01:00
2021-02-17 14:12:43 +01:00
2021-02-26 09:41:04 -08:00
2021-02-24 13:38:28 -08:00
2021-02-24 10:13:55 -08:00
2021-02-26 09:40:59 -08:00
2021-02-24 13:38:32 -08:00
2021-02-24 13:38:32 -08:00
2021-02-24 13:38:35 -08:00
2021-02-23 11:29:52 -08:00
2021-02-23 13:39:45 -08:00
2021-02-26 09:41:05 -08:00
2021-02-18 23:17:57 -08:00
2021-03-07 14:12:43 -07:00
2021-02-21 10:29:20 -08:00
2021-02-23 11:29:52 -08:00
2021-03-08 20:12:08 +00:00
2021-02-24 13:38:31 -08:00
2021-02-26 09:41:03 -08:00
2021-03-11 14:40:50 +09:00
2021-02-17 14:12:42 +01:00
2021-02-26 10:19:03 -08:00
2021-02-22 10:22:54 -08:00
2021-02-26 09:41:02 -08:00
2021-02-26 09:41:05 -08:00
2021-02-26 09:40:59 -08:00
2021-02-26 09:41:03 -08:00
2021-02-22 13:16:53 -05:00
2021-02-19 11:54:08 +01:00
2021-02-19 11:54:08 +01:00
2021-02-19 11:35:28 +01:00
2021-02-23 13:39:45 -08:00
2021-02-23 13:39:45 -08:00
2021-02-26 09:41:03 -08:00
2021-03-13 11:27:29 -08:00
2021-03-13 11:27:31 -08:00
2021-02-26 09:41:00 -08:00
2021-02-26 09:41:00 -08:00
2021-02-26 09:41:00 -08:00
2021-02-24 13:38:35 -08:00
2021-02-24 13:38:33 -08:00
2021-03-13 11:27:30 -08:00
2021-03-13 11:27:30 -08:00
2021-02-26 09:41:00 -08:00
2021-02-24 10:25:37 -08:00
2021-02-27 08:07:12 -08:00
2021-02-16 19:35:29 -08:00
2021-02-23 20:32:11 -07:00
2021-03-04 15:52:44 +01:00
2021-02-26 09:17:24 -08:00
2021-02-17 13:17:49 -08:00
2021-02-24 13:38:29 -08:00
2021-02-26 09:41:01 -08:00
2021-02-26 09:40:59 -08:00
2021-02-26 09:40:59 -08:00
2021-02-25 09:56:08 -08:00
2021-02-23 14:11:13 -06:00
2021-02-23 14:12:01 -06:00
2021-02-23 09:28:51 -08:00
2021-04-16 16:32:40 +02:00
2021-03-10 10:56:46 +00:00
2021-02-16 15:23:23 -08:00
2021-02-24 14:52:41 +01:00
2021-03-10 15:25:02 +01:00
2021-02-26 09:41:03 -08:00
2021-02-17 14:07:44 +01:00
2021-02-21 12:35:04 -08:00
2021-02-26 09:41:01 -08:00
2021-02-21 17:25:22 -07:00
2021-02-23 13:39:45 -08:00
2021-03-10 09:51:45 +01:00
2021-02-26 09:41:02 -08:00
2021-02-26 09:41:02 -08:00
2021-02-26 09:41:04 -08:00
2021-02-17 14:12:42 +01:00
2021-02-17 14:12:42 +01:00
2021-02-17 14:25:50 -08:00
2021-03-13 11:27:30 -08:00
2021-02-26 09:41:04 -08:00
2021-03-02 17:25:46 -07:00
2021-02-20 10:13:32 -05:00
2021-02-23 13:39:45 -08:00
2021-03-01 15:25:24 -08:00
2021-03-04 09:51:50 -05:00
2021-02-20 21:28:04 -08:00
2021-03-10 09:51:45 +01:00
2021-03-11 11:11:33 +01:00
2021-02-23 07:52:56 -05:00
2021-03-09 16:12:20 -08:00
2021-02-23 07:52:58 -05:00
2021-02-26 09:41:00 -08:00
2021-02-26 09:41:01 -08:00
2021-02-26 09:41:01 -08:00