]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
sched_ext: Use kvfree_rcu() to release per-cpu ksyncs object
authorZqiang <qiang.zhang@linux.dev>
Mon, 17 Nov 2025 12:53:11 +0000 (20:53 +0800)
committerTejun Heo <tj@kernel.org>
Mon, 17 Nov 2025 15:16:10 +0000 (05:16 -1000)
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 <qiang.zhang@linux.dev>
Signed-off-by: Tejun Heo <tj@kernel.org>
kernel/sched/ext.c

index 918573f3f0881a545907b5c5d71d68599a54579b..dca9ca0c185411a15a23901a9cebd9cfa78d984b 100644 (file)
@@ -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);
        }
 }