Odebrany

CVE-2026-93208

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ę:

kasan: napraw wyścig zmniejszania pamięci podręcznej za pomocą hotplug procesora

kasan_quarantine_remove_cache() najpierw wywołuje funkcję per_cpu_remove_cache()
wszystkie procesory online. Każde wywołanie zwrotne przenosi obiekty należące do pamięci podręcznej z
cpu_quarantine do listy Shrink_qlist procesora, gdzie można je później zwolnić
z kontekstu zadania.

kmem_cache_destroy() przytrzymując wywołuje ścieżkę usuwania kwarantanny
cpus_read_lock(), ale kmem_cache_shrink() nie. To ostatnie może
dlatego ścigaj się z odłączeniem procesora w trybie offline w następujący sposób:

kmem_cache_shrink() Możliwość podłączenia procesora podczas pracy
------------------- -----------
na_każdy_procesor()
CPU1 przenosi obiekty do
Lista skurczów procesora1
on_each_cpu() zwraca
CPU1 przechodzi w tryb offline
kasan_cpu_offline()
wyczerpuje cpu_quarantine
pozostawia kurczenie się_qlist nietknięte
for_each_online_cpu()
pomija CPU1

Obiekty pozostawione na liście Shrink_qlist CPU1 nie są zwracane na płytę
rozdzielacz. Może to uniemożliwić kmem_cache_shrink() zwolnienie płyt, które
w przeciwnym razie stałby się pusty. Jeśli CPU1 pozostanie w trybie offline, później
kmem_cache_destroy() również pomija listę i może zgłosić, że pamięć podręczna
nadal zawiera obiekty.

W przypadku systemu plików virtio-9p zaobserwowano sporadyczne występowanie. The
Zarówno polecenia mount, jak i umount zwróciły 0, ale jądro zarejestrowało błąd
następujące czynności podczas rozłączania wywołanego przez przestrzeń użytkownika:

[2994.380134][ T111] BŁĄD 9p-fcall-cache-1 (Tainted: G B ): Obiekty pozostałe w __kmem_cache_shutdown()
[ 2994.381140][ T111] Obiekt 0xff11000004361118 @offset=4376
[ 2994.381607][ T111] Przydzielone w p9_fcall_init+0x201/0x400 age=19564 cpu=1 pid=104
[ 2994.382591][ T111] p9_fcall_init+0x201/0x400
[ 2994.382810][ T111] p9_tag_alloc+0x12f/0x700
[ 2994.382982][ T111] p9_client_prepare_req+0x102/0x3e0
[ 2994.383165][ T111] p9_client_rpc+0x1ab/0xa50
[ 2994.383334][ T111] p9_client_getattr_dotl+0xb0/0x1a0
[ 2994.383515][ T111] v9fs_vfs_getattr_dotl+0x115/0x360
[ 2994.383719][ T111] vfs_getattr_nosec+0x22c/0x3a0
[ 2994.383910][ T111] vfs_statx+0xd7/0x170
[ 2994.384062][ T111] vfs_fstatat+0x45/0x80
[ 2994.384215][ T111] __do_sys_newfstatat+0x84/0xe0
[ 2994.384386][ T111] do_syscall_64+0x115/0x6a0
[ 2994.384566][ T111] wpis_SYSCALL_64_after_hwframe+0x77/0x7f
[ 2994.399720][ T111] OSTRZEŻENIE: mm/slub.c:1244 w __kmem_cache_shutdown+0x363/0x500, CPU#0: busybox/111
[ 2994.405655][ T111] Śledzenie połączenia:
[ 2994.406325][ T111] kmem_cache_destroy+0x73/0x1b0
[ 2994.406630][ T111] p9_client_destroy+0x271/0x3c0
[ 2994.407210][ T111] v9fs_session_close+0x3c/0x260
[ 2994.407409][ T111] v9fs_kill_super+0x48/0x90
[ 2994.407584][ T111] deactivate_locked_super+0xa3/0x160
[ 2994.407778][ T111] cleanup_mnt+0x1dd/0x3e0

W ten sposób pomyślna liczba pozostawiła obiekty w pamięci podręcznej fcall 9p i uniemożliwiła to
pamięć podręczną przed czystym zniszczeniem.

Pamięć skurczowa_qlist przypadająca na procesor istnieje dla każdego możliwego procesora i każdej listy
jest chroniony przez własny, surowy zamek. Iteruj po możliwych procesorach, aby to zrobić
lista wypełniona przed przejściem procesora w tryb offline również jest opróżniana.

for_each_possible_cpu() może wykonać więcej pracy niż for_each_online_cpu(), ale
ta zmiana dotyczy tylko jąder CONFIG_KASAN_GENERIC. Dodatkowa praca to
ogranicza się do ścieżek zmniejszania pamięci podręcznej i niszczenia pamięci podręcznej i nie ma wpływu
normalna alokacja/bezpłatna szybka ścieżka. Dodaje jeden surowy, chroniony blokadą spinlock
skanowanie listy zmniejszania każdego możliwego procesora. Listy te są zwykle puste;
przez niepustą listę przechodzi się w celu usunięcia obiektów należących do pamięci podręcznej
skurczone lub zniszczone.

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