Odebrany

CVE-2026-93182

opublikowano:
modyfikacja:
Ocena CVSS
n/a
Brak oceny

>_ Opis

Tłumaczenie automatyczne – może zawierać nieścisłości.

W jądrze Linuksa usunięto następującą lukę:

sched/fair: Napraw przepełnienie w update_tg_cfs_runnable()

Podczas uruchamiania hackbencha obserwuje się awarię dzielenia przez zero:

[14697.488452] Procesor: 112 UID: 0 PID: 124791 Comm: hackbench Nieskażony 7.1.0-rc2+
[14697.492627] RIP: 0010:propagate_entity_load_avg+0x35f/0x3e0
[14697.506799] <ZADANIE>
[14697.507411] __dequeue_task+0x2b4/0xc70
[14697.508677] dequeue_task_fair+0x36/0x370
[14697.509047] usuwanie_zadania z kolejki+0x101/0x2f0
[14697.509426] __harmonogram+0x1b1/0x1a00
[14697.510868] anon_pipe_read+0x3da/0x450
[14697.511400] vfs_read+0x361/0x390
[14697.512053] __x64_sys_read+0x19/0x30

Dzielenie przez zero ma miejsce tutaj:

if (scale_load_down(gcfs_rq->load.weight)) {
suma_ładowania = div_u64(gcfs_rq->średnia.suma_ładowania,
skala_load_down(gcfs_rq->load.weight));
}

gcfs_rq->load.weight to niesamowicie duża wartość, która jest obcinana
do niższych 32 bitów przez div_u64, które akurat mają wartość 0.

Używając sztucznej inteligencji do badania, przyczyną jest przepełnienie u32
update_tg_cfs_runnable(), a flat pickup stał się ofiarą podczas używania
tg_zadania():

u32 nowa_suma, dzielnik;
...
nowa_suma = se->avg.runnable_avg * dzielnik; <-- bum

Poniższa sekwencja pokazuje, jak powoduje to awarię:

propagate_entity_load_avg()
update_tg_cfs_runnable() # Przepełnienie u32 uszkadza sumę runnable

__update_load_avg_cfs_rq()
___update_load_avg() # oblicza szaloną wartość runnable_avg
update_tg_load_avg() # propaguje do tg->runnable_avg

aktualizacja_cfs_group()
calc_concur_shares()
tg_tasks() # obcięcie typu long-to-int, liczba ujemna
reweight_entity() # uszkodzona se->load.weight
update_load_add() # uszkodzony cfs_rq->load.weight

propagate_entity_load_avg()
aktualizacja_tg_cfs_load()
div_u64() # dzielenie przez zero

Napraw, poszerzając new_sum z u32 do u64 (nie ma potrzeby wymuszania tg_tasks()
aby powrócić bez podpisu długo po tej poprawce)

>_ 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