]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
sched/mmcid: Remove pointless preempt guard
authorThomas Gleixner <tglx@kernel.org>
Tue, 10 Mar 2026 20:29:04 +0000 (21:29 +0100)
committerPeter Zijlstra <peterz@infradead.org>
Wed, 11 Mar 2026 11:01:06 +0000 (12:01 +0100)
This is a leftover from the early versions of this function where it could
be invoked without mm::mm_cid::lock held.

Remove it and add lockdep asserts instead.

Fixes: 653fda7ae73d ("sched/mmcid: Switch over to the new mechanism")
Signed-off-by: Thomas Gleixner <tglx@kernel.org>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Tested-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Link: https://patch.msgid.link/20260310202526.116363613@kernel.org
kernel/sched/core.c

index ee59cd19b9a8d3bfa526709a25562e4abb9d3f2b..f56156f91d08aa6e9a4402a86707caae3fd30680 100644 (file)
@@ -10684,6 +10684,8 @@ static void mm_cid_fixup_tasks_to_cpus(void)
 
 static bool sched_mm_cid_add_user(struct task_struct *t, struct mm_struct *mm)
 {
+       lockdep_assert_held(&mm->mm_cid.lock);
+
        t->mm_cid.active = 1;
        mm->mm_cid.users++;
        return mm_update_max_cids(mm);
@@ -10736,12 +10738,12 @@ static void sched_mm_cid_fork(struct task_struct *t)
 
 static bool sched_mm_cid_remove_user(struct task_struct *t)
 {
+       lockdep_assert_held(&t->mm->mm_cid.lock);
+
        t->mm_cid.active = 0;
-       scoped_guard(preempt) {
-               /* Clear the transition bit */
-               t->mm_cid.cid = cid_from_transit_cid(t->mm_cid.cid);
-               mm_unset_cid_on_task(t);
-       }
+       /* Clear the transition bit */
+       t->mm_cid.cid = cid_from_transit_cid(t->mm_cid.cid);
+       mm_unset_cid_on_task(t);
        t->mm->mm_cid.users--;
        return mm_update_max_cids(t->mm);
 }