tracing/user_events: Allow events to persist for perfmon_capable users
Get series with b4
b4 am [email protected]Versions newest first · linked by author and title
- v2 Latest3 patches 0 repliesNew
- v13 patches 1 replySuperseded
Changes in v2 from the cover letter
Added common user_event_capable() function to check access given the register flags.
Patches in v2 No applies recorded yet
| # | Subject and files | Size | Replies | Applied |
|---|---|---|---|---|
| 1/3 | tracing/user_events: Allow events to persist for perfmon_capable usersinclude/ kernel/ | +32 | 0 replies | |
| 2/3 | selftests/user_events: Test persist flag casestools/ tools/ | +107 | 0 replies | |
| 3/3 | tracing/user_events: Document persist event flagsDocumentation/ | +18 | 0 replies |
Reviews trailers per patch
No Reviewed-by, Acked-by or Tested-by trailers for v2 yet.
Cover letter [PATCH v2 0/3] tracing/user_events: Allow events to persist for perfmon_capable users
There are several scenarios that have come up where having a user_event persist even if the process that registered it exits. The main one is having a daemon create events on bootup that shouldn't get deleted if the daemon has to exit or reload. Another is within OpenTelemetry exporters, they wish to potentially check if a user_event exists on the system to determine if exporting the data out should occur. The user_event in this case must exist even in the absence of the owning process running (such as the above daemon case).
Since persistent events aren't automatically cleaned up, we want to ensure only trusted users are allowed to do this. It seems reasonable to use CAP_PERFMON as that boundary, since those users can already do many things via perf_event_open without requiring full CAP_SYS_ADMIN.
This patchset brings back the ability to use /sys/kernel/tracing/dynamic_events to create user_events, as persist is now back to being supported. Both the register and delete of events that persist require CAP_PERFMON, which prevents a non-perfmon user from making an event go away that a perfmon user decided should persist.
Change History:
V2:
Added common user_event_capable() function to check access given the register flags.
Ensure access check is done for dynamic_events when implicitly removing events, such as "echo 'u:test' > /sys/kernel/tracing/dynamic_events".
Beau Belgrave (3):
tracing/user_events: Allow events to persist for perfmon_capable users selftests/user_events: Test persist flag cases tracing/user_events: Document persist event flags
Documentation/trace/user_events.rst | 21 ++++++- include/uapi/linux/user_events.h | 11 +++- kernel/trace/trace_events_user.c | 36 +++++++----- .../testing/selftests/user_events/abi_test.c | 55 ++++++++++++++++++- .../testing/selftests/user_events/dyn_test.c | 54 +++++++++++++++++- 5 files changed, 157 insertions(+), 20 deletions(-)
base-commit: fc1653abba0d554aad80224e51bcad42b09895ed
Signature · 1 line
2.34.1