9.8

CVE-2026-90173

smb: smbdirect: free completion queues with ib_free_cq()

In the Linux kernel, the following vulnerability has been resolved:

smb: smbdirect: free completion queues with ib_free_cq()

smbdirect_connection_destroy_qp() creates the send and receive completion
queues with ib_alloc_cq_any(), which for IB_POLL_WORKQUEUE arms an
internal completion handler that runs ib_cq_poll_work() on a workqueue.
Tearing those CQs down with ib_destroy_cq() frees them without first
cancelling that poll work.

If the provider posts a completion late -- for example Soft-RoCE (rxe)
posting an RNR error from rxe_receiver() after rdma_destroy_qp() -- the
handler re-queues ib_cq_poll_work() on the already-freed CQ, and a
follow-on access faults in rxe_req_notify_cq().

Use ib_free_cq(), which cancel_work_sync()es the poll work before freeing
the CQ, so no completion handler can run against a freed queue.

[ 1236.599526] ==================================================================
[ 1236.602142] BUG: KASAN: slab-use-after-free in ib_cq_poll_work+0xd0/0x1a0
[ 1236.605524] Read of size 8 at addr ffff888111865800 by task kworker/4:1H/82
[ 1236.609017]
[ 1236.609270] CPU: 4 UID: 0 PID: 82 Comm: kworker/4:1H Not tainted 7.2.0-rc3-next-20260717-virtme #110 PREEMPT(lazy)
[ 1236.609287] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.17.0-debian-1.17.0-1 04/01/2014
[ 1236.609498] Workqueue: ib-comp-wq ib_cq_poll_work
[ 1236.609525] Call Trace:
[ 1236.609536]  <TASK>
[ 1236.609545]  __dump_stack+0x21/0x60
[ 1236.609562]  dump_stack_lvl+0xc2/0x100
[ 1236.609573]  print_address_description+0x77/0x200
[ 1236.609587]  ? ib_cq_poll_work+0xd0/0x1a0
[ 1236.609597]  print_report+0x58/0x70
[ 1236.609607]  kasan_report+0x117/0x150
[ 1236.609623]  ? ib_cq_poll_work+0xd0/0x1a0
[ 1236.609636]  ? process_scheduled_works+0x954/0x1600
[ 1236.609650]  ib_cq_poll_work+0xd0/0x1a0
[ 1236.609662]  ? process_scheduled_works+0x954/0x1600
[ 1236.609674]  process_scheduled_works+0xc22/0x1600
[ 1236.609698]  ? __pfx_process_scheduled_works+0x10/0x10
[ 1236.609713]  ? __pfx_assign_work+0x10/0x10
[ 1236.609726]  ? lock_is_held_type+0x7b/0x110
[ 1236.609741]  worker_thread+0x975/0xee0
[ 1236.609757]  ? __pfx_do_raw_spin_lock+0x10/0x10
[ 1236.609775]  ? __kthread_parkme+0x21e/0x260
[ 1236.609789]  kthread+0x3a6/0x490
[ 1236.609800]  ? __pfx_worker_thread+0x10/0x10
[ 1236.609809]  ? __pfx_kthread+0x10/0x10
[ 1236.609820]  ret_from_fork+0x55a/0xa20
[ 1236.609835]  ? __pfx_ret_from_fork+0x10/0x10
[ 1236.609850]  ? __pfx_kthread+0x10/0x10
[ 1236.609861]  ret_from_fork_asm+0x1a/0x30
[ 1236.609880]  </TASK>
[ 1236.609886]
[ 1236.661292] Allocated by task 5076:
[ 1236.662640]  kasan_save_track+0x3e/0x80
[ 1236.663842]  __kasan_kmalloc+0x72/0x90
[ 1236.664763]  __kmalloc_noprof+0x2b0/0x5d0
[ 1236.665356]  __ib_alloc_cq+0x284/0x1000
[ 1236.666573]  __ib_alloc_cq_any+0x23e/0x340
[ 1236.668654]  smbdirect_connection_create_qp+0x6f7/0x1070
[ 1236.669757]  smbdirect_accept_connect_request+0x500/0x1ca0
[ 1236.672625]  smbdirect_listen_rdma_event_handler+0x1655/0x1c50
[ 1236.673930]  cma_listen_handler+0x1bf/0x260
[ 1236.674923]  cma_cm_event_handler+0x128/0x380
[ 1236.676926]  cma_ib_req_handler+0x2d3d/0x4de0
[ 1236.678368]  cm_process_work+0xb0/0x530
[ 1236.680454]  cm_queue_work_unlock+0xb1/0x230
[ 1236.681673]  cm_work_handler+0x969f/0xdca0
[ 1236.682704]  process_scheduled_works+0xc22/0x1600
[ 1236.683447]  worker_thread+0x975/0xee0
[ 1236.685901]  kthread+0x3a6/0x490
[ 1236.688164]  ret_from_fork+0x55a/0xa20
[ 1236.689522]  ret_from_fork_asm+0x1a/0x30
[ 1236.690073]
[ 1236.690378] Freed by task 5137:
[ 1236.692242]  kasan_save_track+0x3e/0x80
[ 1236.694272]  kasan_save_free_info+0x40/0x50
[ 1236.695514]  __kasan_slab_free+0x3a/0x60
[ 1236.696773]  kfree+0x14e/0x4e0
[ 1236.697216]  ib_destroy_cq_user+0x18d/0x250
[ 1236.699817]  smbdirect_connection_destroy_qp+0xf2/0x280
[ 1236.702115]  smbdirect_socket_destroy_sync+0x1607/0x2720
[ 1236.704062]  smbdirect_socket_release+0x140/0x280
[ 1236.705286]  smb_direct_free_transpor
---truncated---
Daten sind bereitgestellt durch das CVE Programm von einer CVE Numbering Authority (CNA) (Unstrukturiert).
HerstellerLinux
≫
Produkt Linux
Default Statusunaffected
Version 6073eb3e31756d569c4853fb22724525739d0e0c
Version < 8a953b1a47fffb71e70767bc1e914401e3c2f27f
Status affected
Version 6073eb3e31756d569c4853fb22724525739d0e0c
Version < fe2c0cacbcff9d56c03b296f68f22151c4223b04
Status affected
HerstellerLinux
≫
Produkt Linux
Default Statusaffected
Version 7.1
Status affected
Version 0
Version < 7.1
Status unaffected
Version <= 7.2.*
Version 7.2.6
Status unaffected
Version <= *
Version 7.3-rc1
Status unaffected
VulnDex Vulnerability Enrichment
Diese Information steht angemeldeten Benutzern zur Verfügung. Login Login
Zu dieser CVE wurde keine Warnung gefunden.
EPSS Metriken
Typ Quelle Score Percentile
EPSS FIRST.org 0.52% 0.429
CVSS Metriken
Quelle Base Score Exploit Score Impact Score Vector String
416baaa9-dc9f-4396-8d5f-8c081fb06d67 9.8 3.9 5.9
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Es wurden noch keine Informationen zu CWE veröffentlicht.
https://git.kernel.org/stable/c/8a953b1a47fffb71e70767bc1e914401e3c2f27f
https://git.kernel.org/stable/c/fe2c0cacbcff9d56c03b296f68f22151c4223b04