В ядре Linux устранена следующая уязвимость:
sched_ext: заменить SCX_RQ_BAL_KEEP возвратом вердикта отправки.
SCX_RQ_BAL_KEEP сообщает пикировщику продолжать выполнение предыдущей задачи, оставшейся
с тех пор, как балансировка и комплектование были отдельными операциями. Флаг уровня rq
работает только пока отправляет и подбирает пару один к одному, какое ядро
планирование перерывов: выборы чередуются посредством блокировки диспетчеризации и
Pick может использовать устаревший флаг, сохраняя задачу, которая с тех пор была исключена из очереди. Исправление основной поддержки планирования требует решения путешествовать с
отправка, которая это сделала.
Заставьте scx_dispatch_sched() и Balance_one() возвращать
вместо этого вынесите явный вердикт и удалите сантехнику флага из инструментов autogen
заголовки перечисления. Также учтите вызов на стороне выбора, последующую постановку в очередь и
проверка после отправки из do_pick_task_scx() в send_pick(). Нет
запланированы функциональные изменения.
v2: удалите канал SCX_RQ_BAL_KEEP из заголовков перечисления инструментов autogen.
также (Андреа).
Показать оригинальное описание (EN)
In the Linux kernel, the following vulnerability has been resolved: sched_ext: Replace SCX_RQ_BAL_KEEP with a dispatch verdict return SCX_RQ_BAL_KEEP tells the pick to keep running the previous task, a leftover from when balancing and picking were separate operations. An rq-level flag only works while dispatches and picks pair up one to one, which core scheduling breaks: selections interleave through dispatch's lock drops and a pick can consume a stale flag, keeping a task that has since been dequeued. Fixing core scheduling support requires the decision to travel with the dispatch that made it. Make scx_dispatch_sched() and balance_one() return an explicit verdict instead and drop the flag's plumbing from the tools autogen enum headers. Also factor the pick-side invocation, its follow-up queueing and the post-dispatch checks out of do_pick_task_scx() into dispatch_pick(). No functional changes intended. v2: Drop the SCX_RQ_BAL_KEEP plumbing from the tools autogen enum headers as well (Andrea).