* [PATCH] tracing/user_events: Remove user_ns walk for groups
@ 2023-06-01 22:49 Beau Belgrave
0 siblings, 0 replies; only message in thread
From: Beau Belgrave @ 2023-06-01 22:49 UTC (permalink / raw)
To: rostedt, mhiramat; +Cc: linux-kernel, linux-trace-kernel, brauner
During discussions it was suggested that user_ns is not a good place to
try to attach a tracing namespace. The current code has stubs to enable
that work that are very likely to change and incur a performance cost.
Remove the user_ns walk when creating a group and determining the system
name to use, since it's unlikely user_ns will be used in the future.
Link: https://lore.kernel.org/all/20230601-urenkel-holzofen-cd9403b9cadd@brauner/
Suggested-by: Christian Brauner <brauner@kernel.org>
Signed-off-by: Beau Belgrave <beaub@linux.microsoft.com>
---
kernel/trace/trace_events_user.c | 42 ++++----------------------------
1 file changed, 5 insertions(+), 37 deletions(-)
diff --git a/kernel/trace/trace_events_user.c b/kernel/trace/trace_events_user.c
index b1ecd7677642..55e362484b66 100644
--- a/kernel/trace/trace_events_user.c
+++ b/kernel/trace/trace_events_user.c
@@ -180,21 +180,11 @@ static void user_event_group_destroy(struct user_event_group *group)
kfree(group);
}
-static char *user_event_group_system_name(struct user_namespace *user_ns)
+static char *user_event_group_system_name(void)
{
char *system_name;
int len = sizeof(USER_EVENTS_SYSTEM) + 1;
- if (user_ns != &init_user_ns) {
- /*
- * Unexpected at this point:
- * We only currently support init_user_ns.
- * When we enable more, this will trigger a failure so log.
- */
- pr_warn("user_events: Namespace other than init_user_ns!\n");
- return NULL;
- }
-
system_name = kmalloc(len, GFP_KERNEL);
if (!system_name)
@@ -205,34 +195,12 @@ static char *user_event_group_system_name(struct user_namespace *user_ns)
return system_name;
}
-static inline struct user_event_group
-*user_event_group_from_user_ns(struct user_namespace *user_ns)
-{
- if (user_ns == &init_user_ns)
- return init_group;
-
- return NULL;
-}
-
static struct user_event_group *current_user_event_group(void)
{
- struct user_namespace *user_ns = current_user_ns();
- struct user_event_group *group = NULL;
-
- while (user_ns) {
- group = user_event_group_from_user_ns(user_ns);
-
- if (group)
- break;
-
- user_ns = user_ns->parent;
- }
-
- return group;
+ return init_group;
}
-static struct user_event_group
-*user_event_group_create(struct user_namespace *user_ns)
+static struct user_event_group *user_event_group_create(void)
{
struct user_event_group *group;
@@ -241,7 +209,7 @@ static struct user_event_group
if (!group)
return NULL;
- group->system_name = user_event_group_system_name(user_ns);
+ group->system_name = user_event_group_system_name();
if (!group->system_name)
goto error;
@@ -2543,7 +2511,7 @@ static int __init trace_events_user_init(void)
if (!fault_cache)
return -ENOMEM;
- init_group = user_event_group_create(&init_user_ns);
+ init_group = user_event_group_create();
if (!init_group) {
kmem_cache_destroy(fault_cache);
base-commit: 3862f86c1529fa0016de6344eb974877b4cd3838
--
2.25.1
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2023-06-01 22:49 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-06-01 22:49 [PATCH] tracing/user_events: Remove user_ns walk for groups Beau Belgrave
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.