CVE-2026-89647
>_ Opis
Tłumaczenie automatyczne – może zawierać nieścisłości.
W jądrze Linuksa usunięto następującą lukę:
ceph: nie powtarzaj funkcji ceph_trim_dentries(), jeśli nie jest możliwy postęp
ceph_cap_reclaim_work() ponownie ustawia się w kolejce na tak długo, jak
ceph_trim_dentries() zwraca -EAGAIN, co ma miejsce w przypadku dzierżawy
walk wyczerpuje budżet `nr_to_scan`. Tworzy to zajętą pętlę
zużywa procesor, nie robiąc żadnego postępu, gdy nie ma nic do zrobienia
odzyskanie: bez ograniczenia ciśnienia (`count==0`) i przy każdej zeskanowanej dzierżawie
nadal ważny, każde przejście zmniejsza budżet pełnego skanowania do zera i
zwraca `-EAGAIN`, ale natychmiast trafia do kolejki.
Spacer po dilerach pogorszył sytuację. Kiedy `expire_dir_lease` jest
`false` (tzn. nie mamy zamiaru odzyskiwać dzierżawy katalogów),
Funkcja __dir_lease_check() zwróciła „TOUCH” dla każdej ważnej dzierżawy. DOTYK
przesuwa dentry na koniec listy i resetuje `di->time` poprzez
__dentry_dir_lease_touch(), więc przeglądanie N ważnych umów najmu jest bezcelowe
przepisał listę, odświeżył znaczniki czasu (zapobiegając ich kiedykolwiek
starzenie się) i zawsze opróżniane `nr_to_scan`, gwarantując `-EAGAIN`
ponownie kolejkować.
Napraw to w trzech krokach:
- Zwróć „ZACHOWAJ” zamiast „DOTYK”, gdy jest „wygaśnięcie_katalogu_lease”
„fałszywy”. Jeśli nie zamierzamy odzyskać umowy najmu, zostawmy ją
place zamiast zmieniać listę i resetować jej znacznik czasu; the
walk następnie kończy się naturalnie (lub poprzez „STOP” przy pierwszym świeżym
dzierżawa).
- Zwróć `-EAGAIN` tylko z pierwszego spaceru (leasingu stomatologicznego), gdy coś się wydarzy
faktycznie został uwolniony. Pełna partia, która niczego nie uwalnia, oznacza ponowną próbę
ta sama lista jest natychmiast daremna; wpadnij do di-lease
zamiast tego chodzić.
- Po obu spacerach wyskocz z sukcesem (0), gdy nic nie zostało uwolnione
i nie ma ciśnienia nasadki (`count==0`). Nie ma powodu
ponawiaj próby, jeśli nie przekroczyliśmy limitu i nie zrobiliśmy „nie”.
postęp.
Przy rzeczywistym ciśnieniu maksymalnym („liczba> 0”) ścieżka odzyskiwania pozostaje niezmieniona i
nadal próbuje ponownie poprzez `-EAGAIN`.
Bez tej łatki widziałem 500 wywołań ceph_trim_dentries() na sekundę
nasze serwery internetowe. Jest to bardzo widoczne w `/proc/lock_stat` (5 minut
przechwytywanie):
nazwa klasy con-bounces rywalizacje czas oczekiwania-min czas oczekiwania-maks. czas oczekiwania-całkowity czas oczekiwania-średni
&mdsc->dentry_list_lock: 126180 128218 0,04 8063,44 15986965,20 124,69 1573354 5296812 0,04 8291,28 74164526,48 14,00
------------------------
&mdsc->dentry_list_lock 111736 [<000000007b11e319>] __ceph_dentry_dir_lease_touch+0x7c/0xa8
&mdsc->dentry_list_lock 2631 [<0000000050597999>] __dentry_leases_walk+0x64/0x2c8
&mdsc->dentry_list_lock 3878 [<00000000c0022f62>] __ceph_dentry_lease_touch+0x5c/0xa8
&mdsc->dentry_list_lock 9973 [<000000002f27cb6f>] __dentry_lease_unlist+0x50/0xa0
------------------------
&mdsc->dentry_list_lock 123621 [<0000000050597999>] __dentry_leases_walk+0x64/0x2c8
&mdsc->dentry_list_lock 1822 [<000000007b11e319>] __ceph_dentry_dir_lease_touch+0x7c/0xa8
&mdsc->dentry_list_lock 2720 [<000000002f27cb6f>] __dentry_lease_unlist+0x50/0xa0
&mdsc->dentry_list_lock 55 [<00000000c0022f62>] __ceph_dentry_lease_touch+0x5c/0xa8
Z tą poprawką:
nazwa klasy con-bounces rywalizacje czas oczekiwania-min czas oczekiwania-maks. czas oczekiwania-całkowity czas oczekiwania-średni
&mdsc->dentry_list_lock: 1203 1215 0,16 408,88 33082,88 27,23 4320501 7357389 0,04 500,64 1961578,00 0,27
------------------------
&mdsc->dentry_list_lock 1029 [<000000003c9aea8a>] __ceph_dentry_dir_lease_touch+0x7c/0xa8
&mdsc->dentry_list_lock 1
---obcięty---
>_ 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