CVE-2026-98220
>_ Opis
Tłumaczenie automatyczne – może zawierać nieścisłości.
W jądrze Linuksa usunięto następującą lukę:
sched_ext: Napraw NULL sched deref w ścieżkach błędów podrzędnych kfunc
Gdy główny program planujący ma dołączone schematy podrzędne, plik COMPAT kfunc
opakowania scx_bpf_select_cpu_and() i scx_bpf_dsq_insert_vtime() odmawiają
zadzwoń i zgłoś harmonogramowi @p:
scx_error(scx_task_sched(p), "...należy użyć");
Opakowania są dostępne w przypadku zadań, które nie mają harmonogramu.
scx_bpf_select_cpu_and() znajduje się w grupie kfunc Select_cpu, która
scx_kfunc_context_filter() otwiera programy BPF_PROG_TYPE_SYSCALL;
scx_bpf_dsq_insert_vtime() znajduje się w grupie enqueue_dispatch, która
ops.enqueue() i ops.dispatch() mogą wywoływać dowolne zadanie KF_RCU —
grupa nie ma sprawdzania poprawności kf_tasks i sprawdza scx_dsq_insert_preamble()
własność zadania za pomocą scx_task_on_sched() właśnie dlatego, że @p może być
dowolne zadanie.
scx_task_sched(p) to p->scx.sched, które ma wartość NULL dla zadań przeszłych
sched_ext_dead() - co usuwa to za pomocą scx_disable_and_exit_task() na
exit — i dla bezczynnych zadań, które ścieżki włączania pomijają w obecnej postaci
nigdy nie planowane przez SCX. Jest to także funkcja rcu_dereference_protected()
to oczekuje blokady pi_lock lub rq @p, której nie trzyma żadne opakowanie.
Przekazanie NULL do scx_error() powoduje osiągnięcie scx_vexit(), co powoduje wyłuskanie
sch->exit_info, przeglądanie jądra.
Jeden konkretny czynnik zastosowany podczas opracowywania poprawki: a
Program BPF_PROG_TYPE_SYSCALL wywołujący opakowanie Select_cpu_and na komputerze
zadanie zakończyło się, ale nie zostało zebrane, gdy podłączony był harmonogram podrzędny (jego pid
pozostaje możliwy do znalezienia, dopóki zombie nie jest zebrany; błędna instrukcja jest
prolog scx_vexit() „mov r15,[rdi+0x398]” z RDI=NULL i 0x398
przesunięcie sch->exit_info):
sched_ext: Włączono harmonogram BPF „kfunc_subsched_null”.
sched_ext: Podprogram harmonogramu BPF „kfunc_subsched_null” włączony
sched_ext: Nieskojarzony program run_select_cpu_ (id 76)
BŁĄD: wyłuskiwanie wskaźnika NULL jądra, adres: 0000000000000398
#PF: dostęp do odczytu nadzorcy w trybie jądra
#PF: kod_błędu(0x0000) - nie ma strony
Ups: Ups: 0000 [#1] SMP NOPTI
Procesor: 7 UID: 0 PID: 8201 Comm: kfunc_test_runn Tainted: G W
RIP: 0010:scx_vexit+0x25/0xa0
Kod: ... <4c> 8b bf 98 03 00 00 ...
CR2: 0000000000000398
Zadzwoń do śledzenia:
<ZADANIE>
__scx_exit+0x4f/0x70
scx_bpf_select_cpu_and+0xab/0xb0
bpf_prog_430ed61a7b66e03a_run_select_cpu_and+0x9c/0xe7
? __x64_sys_bpf+0x2c/0x40
bpf_prog_test_run_syscall+0x130/0x2f0
__sys_bpf+0x930/0x10d0
? __x64_sys_bpf+0x2c/0x40
__x64_sys_bpf+0x2c/0x40
do_syscall_64+0xbc/0x460
wpis_SYSCALL_64_after_hwframe+0x76/0x7e
</ZADANIE>
Zamiast tego przeczytaj harmonogram @p w RCU, z którego mogą korzystać opakowania
ich strażnik(rcu)(): obwiniaj go, kiedy można to ustalić i kiedy
nie można określić -- @p jest zadaniem po sched_ext_dead() lub jest bezczynne
zadanie — nie ma nic oczywistego złego do zgłoszenia, więc po prostu odmów
zadzwoń jak poprzednio, nie obwiniając żadnego harmonogramu.
Opakowania COMPAT mają zostać ostatecznie usunięte po
upływa okres karencji na amortyzację, ale do tego czasu – i niezależnie od tego
harmonogram ich usuwania - nie mogą zlecać jądra wykonania zadania, które wykonują
są wręczane.
>_ Referencje
Dane podatności pochodzą z oficjalnych źródeł (CVE® List / NVD). Opisy po polsku są tłumaczone automatycznie i mogą zawierać nieścisłości – na stronie rekordu można wyświetlić wersję angielską.
This product uses the NVD API but is not endorsed or certified by the NVD.
Copyright © 1999–2026, The MITRE Corporation. CVE is a registered trademark and the CVE logo is a registered trademark of The MITRE Corporation.
CVE Usage: MITRE hereby grants you a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute Common Vulnerabilities and Exposures (CVE®). Any copy you make for such purposes is authorized provided that you reproduce MITRE's copyright designation and this license in any such copy. ALL DOCUMENTS AND THE INFORMATION CONTAINED THEREIN PROVIDED BY MITRE ARE PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND.
NVD Terms of Use / CVE® Terms of Use / nvd.nist.gov / cve.org