--- x/kernel/sched/sched.h +++ y/kernel/sched/sched.h @@ -3264,22 +3264,25 @@ static inline int __mm_cid_get(struct mm static inline void mm_cid_put(struct mm_struct *mm, int cid) { + unsigned long flags; + lockdep_assert_irqs_disabled(); if (cid < 0) return; - raw_spin_lock(&mm->cid_lock); + raw_spin_lock_irqsave(&mm->cid_lock, flags); __cpumask_clear_cpu(cid, mm_cidmask(mm)); - raw_spin_unlock(&mm->cid_lock); + raw_spin_unlock_irqrestore(&mm->cid_lock, flags); } static inline int mm_cid_get(struct mm_struct *mm) { + unsigned long flags; int ret; lockdep_assert_irqs_disabled(); - raw_spin_lock(&mm->cid_lock); + raw_spin_lock_irqsave(&mm->cid_lock, flags); ret = __mm_cid_get(mm); - raw_spin_unlock(&mm->cid_lock); + raw_spin_unlock_irqrestore(&mm->cid_lock, flags); return ret; }