Messages in this thread | | | Date | Mon, 30 Aug 2021 11:12:12 +0200 | From | Peter Zijlstra <> | Subject | Re: [PATCH V2] sched: Prevent balance_push() on remote runqueues |
| |
On Sat, Aug 28, 2021 at 03:55:52PM +0200, Thomas Gleixner wrote: > sched_setscheduler() and rt_mutex_setprio() invoke the run-queue balance > callback after changing priorities or the scheduling class of a task. The > run-queue for which the callback is invoked can be local or remote. > > That's not a problem for the regular rq::push_work which is serialized with > a busy flag in the run-queue struct, but for the balance_push() work which > is only valid to be invoked on the outgoing CPU that's wrong. It not only > triggers the debug warning, but also leaves the per CPU variable push_work > unprotected, which can result in double enqueues on the stop machine list. > > Remove the warning and validate that the function is invoked on the > outgoing CPU. > > Fixes: ae7927023243 ("sched: Optimize finish_lock_switch()") > Reported-by: Sebastian Siewior <bigeasy@linutronix.de> > Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Thanks!
| |