CVE-2026-90172
>_ Opis
Tłumaczenie automatyczne – może zawierać nieścisłości.
W jądrze Linuksa usunięto następującą lukę:
smb: smbdirect: zniszcz QP zanim nastąpi pula pamięci w przypadku niepowodzenia akceptacji
Na ścieżce błędu rdma_accept_failed pliku
smbdirect_accept_connect_request(), odbiór io opublikowany tuż powyżej to
należący do QP (recv_io jest ustawione na NULL po pomyślnym przesłaniu). The
ścieżka błędu prowadziła do smbdirect_connection_destroy_mem_pools()
przed smbdirect_connection_destroy_qp(), więc pule pamięci i
Pamięć podręczna płyty recv_io została zniszczona, gdy recv_io był nieruchomy
znakomity na QP.
Odpływ w smbdirect_connection_destroy_qp() (ib_drain_qp()) jest tym, co
uruchamia dokończenie recv, które zwraca recv_io do wolnej listy, więc
zniszczenie basenów w pierwszej kolejności pozostawia obiekt nienaruszony
kmem_cache_destroy() („Slab cache nadal zawiera obiekty”) i później
uwalnia go do już zniszczonej pamięci (mempool_free_bulk
Dereferencja wskaźnika NULL).
W takim razie daj rdma_accept_failed własne rozbicie, które najpierw wyczerpuje QP
niszczy pule pamięci i wraca. Pozostałe etykiety
(od post_recv_io_failed) uruchamiane przed opublikowaniem recv_io, więc
zachowują porządek mem-pools-then-qp.
Znakomity czas recv_io w kmem_cache_destroy():
[ 3487.344647] =============================================================================
[3487.349942] BŁĄD smbdirect_recv_io_cache_ffff88811ba99000 (Nieskażony): Obiekty pozostałe w __kmem_cache_shutdown()
[ 3487.356078] ----------------------------------------------------------------------------------------
[ 3487.356078]
[ 3487.356738] Obiekt 0xffff8881511c3440 @offset=13376
[3487.358464] Przydzielone w mempool_alloc_noprof+0x18c/0x290 wiek=1194 cpu=6 pid=22254
[ 3487.361197] mempool_alloc_noprof+0x18c/0x290
[ 3487.361542] smbdirect_connection_create_mem_pools+0x405/0x780
[ 3487.361972] smbdirect_accept_connect_request+0x5a8/0x1b80
[ 3487.362359] smbdirect_listen_rdma_event_handler+0x1579/0x1b90
[ 3487.362779] cma_cm_event_handler+0x9c/0x230
[ 3487.363096] cma_ib_req_handler+0x2682/0x45d0
[ 3487.363414] cm_process_work+0x56/0x3d0
[ 3487.363676] cm_work_handler+0x8a0e/0xd000
[ 3487.367496] proces_scheduled_works+0xa07/0x13a0
[ 3487.367859] wątek_pracownika+0x7c9/0xc80
[ 3487.368148] kwątek+0x341/0x430
[ 3487.368407] ret_from_fork+0x3a8/0x7a0
[ 3487.368704] ret_from_fork_asm+0x1a/0x30
[ 3487.370307] Płyta 0xffffea0005447000 obiektów=19 wykorzystanych=1 fp=0xffff8881511c0040 flags=0x100000000000240(workingset|head|node=0|strefa=2)
[ 3487.372840] -------[ wytnij tutaj ]------------
[3487.373195] OSTRZEŻENIE: mm/slub.c:1244 w __slab_err+0x1a/0x30, CPU#6: kworker/6:84/22254
[ 3487.373759] Moduły powiązane w:
[3487.373993] Procesor: 6 UID: 0 PID: 22254 Comm: kworker/6:84 Tainted: G B 7.1.0-next-20260623+ #88 PREEMPT(leniwy)
[3487.374778] Zanieczyszczony: [B]=BAD_PAGE
[ 3487.377830] Nazwa sprzętu: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.17.0-debian-1.17.0-1 01.04.2014
[ 3487.378515] Kolejka robocza: ib_cm cm_work_handler
[3487.378820] RIP: 0010:__slab_err+0x1a/0x30
[ 3487.379129] Kod: 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 0f 1f 44 00 00 e8 36 00 00 00 bf 05 00 00 00 be 01 00 00 00 e8 f7 75 45 00 90 <0f> 0b 90 c3 cc cc cc cc cc 66 66 66 66 2e 0f 1f 84 00 00 00 00 00
[3487.383255] RSP: 0018:ffff888220fc7050 EFLAGS: 00010093
[3487.383643] RAX: ffffffff8168e60a RBX: ffff88810955e640 RCX: ffff88821c381d80
[3487.384158] RDX: 0000000000000000 RSI: 0000000000000008 RDI: ffffffff870fa080
[3487.384662] RBP: ffff888220fc7068 R08: ffffffff870fa087 R09: 1ffffffff0e1f410
[ 3487.385192] R10: dffffc0000000000 R11: ffffbfff0e1f411 R12: ffffea0005447210
[ 3487.385674] R13: ffffea0005447000 R14: ffff888220fc7068 R15: ffff88812a8ab300
[3487.388932] FS: 0000000000000000(0000) GS:ffff888427e76000(0000) knlGS:0000000000000000
[3487.389529] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 3487.389934] CR2: 00007ffcf2d84fd8 CR3: 0000000111d64006 CR4: 0000000000f72ef0
[ 3487.390440] PKRU: 55555554
[ 3487.390641] Śledzenie połączeń:
[ 3487.390826] <ZADANIE>
[ 3
---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