Katalog CVE

CVE-2026-99105

Niskie ryzyko· EPSS 6%
Opublikowano: Zaktualizowano: Przetłumaczono: NVD NIST

Prawdopodobieństwo exploitacji (EPSS)

Niskie ryzyko
0.17%

Percentyl 6 - wyżej niż 6% wszystkich znanych CVE

Streszczenie

W schedulerze sched_ext jądra Linux zadanie zakolejkowane z flagą SCX_ENQ_LAST, które trafia z powrotem do lokalnego DSQ swojego CPU, nie powoduje ponownego planowania. CPU pozostaje bezczynny z zakolejkowanym zadaniem do czasu niepowiązanego wybudzenia lub zadziałania watchdoga, co powoduje zawieszenie zadań wychodzących.

Ocena ryzyka

Zadania mogą utknąć na dziesiątki sekund (np. w exit_mmap()), powodując zawieszenia aplikacji i opóźnienia w zamykaniu procesów. Problem dotyczy systemów używających schedulerów sched_ext z SCX_OPS_ENQ_LAST.

Rekomendacja

Zaktualizuj jądro Linux do wersji zawierającej poprawkę ustawiającą need_resched dla zadania przełączanego, gdy enqueue SCX_ENQ_LAST pozostawiło je w lokalnym DSQ. Do czasu aktualizacji unikaj konfiguracji SCX_OPS_ENQ_LAST bez SCX_OPS_ENQ_EXITING.

Inne podatności w Linux kernel

Zobacz wszystkie
Oryginalny opis (angielski, źródło NVD)

In the Linux kernel, the following vulnerability has been resolved: sched_ext: Fix stall when a task enqueued with SCX_ENQ_LAST lands back on its CPU's local DSQ With SCX_OPS_ENQ_LAST, the last runnable task on a CPU is passed to ops.enqueue() instead of being kept running. Exiting tasks without SCX_OPS_ENQ_EXITING, migration disabled tasks without SCX_OPS_ENQ_MIGRATION_DISABLED and tasks on an offline rq skip ops.enqueue() and go straight to the local DSQ. This happens in put_prev_task_scx() after the pick has settled on idle, so nothing reschedules the CPU, which idles with the task queued until an unrelated wakeup lands on it or the watchdog fires. scx_mitosis, which sets SCX_OPS_ENQ_LAST without SCX_OPS_ENQ_EXITING, hit this during mass cgroup teardown: exiting tasks stuck in exit_mmap() for over 40 seconds. A task put on the local DSQ runs, as anywhere else. If the SCX_ENQ_LAST enqueue left the task on this CPU's local DSQ, set need_resched on the task being switched in, as proxy_resched_idle() does. resched_curr() would flag the task being put instead, and __schedule() clears that right after the pick.

Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS