In the Linux kernel, the following vulnerability has been resolved:
schedext: Replace rqlock() to rawspinrqlock() in scxops_bypass()
scxopsbypass() iterates all CPUs to re-enqueue all the scx tasks. For each CPU, it acquires a lock using rqlock() regardless of whether a CPU is offline or the CPU is currently running a task in a higher scheduler class (e.g., deadline). The rqlock() is supposed to be used for online CPUs, and the use of rqlock() may trigger an unnecessary warning in rqpinlock(). Therefore, replace rqlock() to rawspinrqlock() in scxops_bypass().
Without this change, we observe the following warning:
===== START ===== [ 6.615205] rq->balancecallback && rq->balancecallback != &balancepushcallback [ 6.615208] WARNING: CPU: 2 PID: 0 at kernel/sched/sched.h:1730 __schedule+0x1130/0x1c90 ===== END =====