OSDN Git Service

tracing/user_events: Prevent same address and bit per process
authorBeau Belgrave <beaub@linux.microsoft.com>
Tue, 25 Apr 2023 22:51:06 +0000 (15:51 -0700)
committerSteven Rostedt (Google) <rostedt@goodmis.org>
Wed, 26 Apr 2023 01:04:32 +0000 (21:04 -0400)
commit97bbce89bfdec9219dfcb60cd62b815a97cb29cb
tree9357a328f42b9c1c085e1afd8ec631fda88c276d
parent17b439db21d5dbe70c419e982262621e5e6aba7f
tracing/user_events: Prevent same address and bit per process

User processes register an address and bit pair for events. If the same
address and bit pair are registered multiple times in the same process,
it can cause undefined behavior when events are enabled/disabled.
When more than one are used, the bit could be turned off by another
event being disabled, while the original event is still enabled.

Prevent undefined behavior by checking the current mm to see if any
event has already been registered for the address and bit pair. Return
EADDRINUSE back to the user process if it's already being used.

Update ftrace self-test to ensure this occurs properly.

Link: https://lkml.kernel.org/r/20230425225107.8525-4-beaub@linux.microsoft.com
Suggested-by: Doug Cook <dcook@linux.microsoft.com>
Signed-off-by: Beau Belgrave <beaub@linux.microsoft.com>
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
kernel/trace/trace_events_user.c
tools/testing/selftests/user_events/ftrace_test.c