From 348d3c587ac6fa5aaa24ab5c71b7b5635c47e765 Mon Sep 17 00:00:00 2001 From: Zqiang Date: Mon, 17 Nov 2025 20:53:11 +0800 Subject: [PATCH] sched_ext: Use kvfree_rcu() to release per-cpu ksyncs object The free_kick_syncs_rcu() rcu-callback only invoke kvfree() to release per-cpu ksyncs object, this can use kvfree_rcu() replace call_rcu() to release per-cpu ksyncs object in the free_kick_syncs(). Signed-off-by: Zqiang Signed-off-by: Tejun Heo --- kernel/sched/ext.c | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/kernel/sched/ext.c b/kernel/sched/ext.c index 918573f3f088..dca9ca0c1854 100644 --- a/kernel/sched/ext.c +++ b/kernel/sched/ext.c @@ -4161,13 +4161,6 @@ static const char *scx_exit_reason(enum scx_exit_kind kind) } } -static void free_kick_syncs_rcu(struct rcu_head *rcu) -{ - struct scx_kick_syncs *ksyncs = container_of(rcu, struct scx_kick_syncs, rcu); - - kvfree(ksyncs); -} - static void free_kick_syncs(void) { int cpu; @@ -4178,7 +4171,7 @@ static void free_kick_syncs(void) to_free = rcu_replace_pointer(*ksyncs, NULL, true); if (to_free) - call_rcu(&to_free->rcu, free_kick_syncs_rcu); + kvfree_rcu(to_free, rcu); } }