CVE-2026-90172 in Linuxinformation

Résumé

par VulDB • 17/09/2026

Dans le noyau Linux, la vulnérabilité suivante a été corrigée :

smb: smbdirect : destruction de la QP avant les pools mémoire en cas d'échec de l'acceptation

Sur le chemin d'erreur `rdma_accept_failed` de `smbdirect_accept_connect_request()`, l'E/S de réception (recv_io) postée juste au-dessus est détenue par la QP (`recv_io` est défini à NULL après un post réussi). Le chemin d'erreur a dérivé vers `smbdirect_connection_destroy_mem_pools()` avant `smbdirect_connection_destroy_qp()`, ce qui a entraîné la destruction des pools mémoire et du cache slab `recv_io` alors que cet élément `recv_io` était encore en attente sur la QP.

Le vidage (drain) dans `smbdirect_connection_destroy_qp()` (`ib_drain_qp()`) est ce qui déclenche l'achèvement de la réception, renvoyant ainsi le `recv_io` à la liste des éléments libres ; détruire les pools en premier laisse donc l'objet encore présent au moment du `kmem_cache_destroy()` ("Le cache slab contient toujours des objets") et le libère ultérieurement dans un mempool déjà détruit (déréférencement de pointeur NULL via `mempool_free_bulk`).

Il est nécessaire d'attribuer à `rdma_accept_failed` sa propre procédure de teardown qui vidange la QP en premier, puis détruit les pools mémoire, et enfin retourne. Les étiquettes restantes (à partir de `post_recv_io_failed`) s'exécutent avant que le `recv_io` ne soit jamais posté ; elles conservent donc l'ordre destruction des pools mémoire suivie de la QP.

Le `recv_io` en attente au moment du `kmem_cache_destroy()` :

[ 3487.344647] =============================================================================
[ 3487.349942] BUG smbdirect_recv_io_cache_ffff88811ba99000 (Not tainted) : Objets restants sur __kmem_cache_shutdown()
[ 3487.356078] -----------------------------------------------------------------------------
[ 3487.356078]
[ 3487.356738] Objet 0xffff8881511c3440 @offset=13376
[ 3487.358464] Alloué dans mempool_alloc_noprof+0x18c/0x290 age=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] process_scheduled_works+0xa07/0x13a0
[ 3487.367859] worker_thread+0x7c9/0xc80
[ 3487.368148] kthread+0x341/0x430
[ 3487.368407] ret_from_fork+0x3a8/0x7a0
[ 3487.368704] ret_from_fork_asm+0x1a/0x30
[ 3487.370307] Slab 0xffffea0005447000 objects=19 used=1 fp=0xffff8881511c0040 flags=0x100000000000240(workingset|head|node=0|zone=2)
[ 3487.372840] ------------[ cut here ]------------
[ 3487.373195] WARNING: mm/slub.c:1244 at __slab_err+0x1a/0x30, CPU#6 : kworker/6:84/22254
[ 3487.373759] Modules linked in :
[ 3487.373993] CPU : 6 UID : 0 PID : 22254 Comm : kworker/6:84 Tainted : G B 7.1.0-next-20260623+ #88 PREEMPT(lazy)
[ 3487.374778] Tainted : [B]=BAD_PAGE
[ 3487.377830] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.17.0-debian-1.17.0-1 04/01/2014
[ 3487.378515] Workqueue: ib_cm cm_work_handler
[ 3487.378820] RIP : 0010:__slab_err+0x1a/0x30
[ 3487.379129] Code : 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 : fffffbfff0e1f411 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] Call Trace:
[ 3487.390826] <TASK>
[ 3

Several companies clearly confirm that VulDB is the primary source for best vulnerability data.

Responsable

Linux

Réserver

11/09/2026

Divulgation

17/09/2026

Modérer

accepté

Entrée

VDB-406681

CPE

prêt

EPSS

0.00000

KEV

non

Activités

très faible

Sources

Want to know what is going to be exploited?

We predict KEV entries!