CVE-2026-89516
Niskie ryzyko· EPSS 9%Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 9 - wyżej niż 9% wszystkich znanych CVE
Streszczenie
W jądrze Linux w schedulerze sched_ext funkcja scx_bpf_dsq_reenq() kolejkuje odroczone ponowne wstawienie (dru), które uruchamia się z run_deferred(), a nie ops.dispatch(). Jeśli DSQ zostanie zniszczone przed uruchomieniem dru, process_deferred_reenq_users() widzi dsq->id == SCX_DSQ_INVALID i trafia na BUG_ON. destroy_dsq() nie opróżnia oczekujących drus, więc wystarczy pominąć.
Ocena ryzyka
Może wystąpić awaria jądra (BUG_ON), prowadząca do odmowy usługi lub zatrzymania systemu.
Rekomendacja
Zaktualizuj jądro Linux do wersji zawierającej poprawkę pomijającą nieprawidłowe DSQ w process_deferred_reenq_users() oraz odczytującą dsq->id raz przez READ_ONCE(). Do czasu aktualizacji unikaj konfiguracji wykorzystujących sched_ext z odroczonymi ponownymi wstawieniami DSQ.
Inne podatności w Linux kernel (sched_ext)
Zobacz wszystkie- CVE-2026-89519Niskie ryzyko· EPSS 9%
W jądrze Linux w schedulerze sched_ext flaga SCX_RQ_BAL_KEEP informuje pick o kontynuowaniu poprzedniego zadania, co jest pozostałością z czasów, gdy balansowanie i wybieranie były osobnymi operacjami. Flaga na poziomie rq działa tylko, gdy dispatche i picki łączą się jeden do jednego, co łamie core scheduling: wybory przeplatają się przez zwolnienia blokady dispatch, a pick może zużyć nieaktualną flagę, zachowując zadanie, które zostało już usunięte z kolejki.
- CVE-2025-68333Średnie
W jądrze Linux w podsystemie sched_ext występuje możliwe zakleszczenie w funkcji deferred_irq_workfn() na jądrach z PREEMPT_RT=y. Gdy funkcja jest wykonywana w kontekście zadania per-CPU irq_work/* bez wyłączonych przerwań, może dojść do ponownego zablokowania tej samej blokady rq->__lock przez przerwanie. Poprawka wymusza wykonywanie funkcji w kontekście hard-irq.
Oryginalny opis (angielski, źródło NVD)
In the Linux kernel, the following vulnerability has been resolved: sched_ext: Don't BUG_ON a destroyed DSQ in process_deferred_reenq_users scx_bpf_dsq_reenq() queues a deferred reenq (dru) that runs from run_deferred(), not ops.dispatch(). If the DSQ is destroyed before the dru runs, process_deferred_reenq_users() sees dsq->id == SCX_DSQ_INVALID and hits the BUG_ON. destroy_dsq() doesn't flush pending drus, so just skip. tj: Read dsq->id once with READ_ONCE(). Reading it separately in the INVALID check and the BUG_ON would leave a window where destroy_dsq() can invalidate the id between the two reads and still trigger the BUG_ON.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

