CVE-2026-98173

CVE-2026-98173

High · published October 6, 2026

CVSS v3.1
7.5
EPSS
0%
Percentile
24.3
In the wild
Unconfirmed
What it is

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

smb: client: fix use-after-free of iface in cifs_try_adding_channels()

cifs_try_adding_channels() iterates ses->iface_list with

list_for_each_entry_safe_from(), which captures the next entry

(niface) under iface_lock. The loop body then drops iface_lock for

the whole duration of cifs_ses_add_channel().

A concurrent interface refresh (SMB3_request_interfaces() ->

parse_server_interfaces()) marks all ifaces inactive and removes and

frees any that are not re-advertised via list_del() + kref_put(),

where release_iface() is a bare kfree(). Since niface typically has

no channel holding a reference, the list reference is its last and it

can be freed inside the unlocked window. On continue, the iterator

advance step then dereferences niface->iface_head.next, and the loop

body reads iface->rdma_capable/is_active, both on freed memory.

Fix this by never keeping an unreferenced list pointer across the

unlocked window. Each channel attempt now re-scans the list from the

head under iface_lock, takes a kref on the selected candidate, and

passes only that referenced candidate to cifs_ses_add_channel().

weight_fulfilled still tracks selection progress, so restarting the

scan preserves the original weighted distribution and the

weight_fulfilled-before-kref_put ordering on the failure path.

Add a per-pass attempts cap so a flapping interface refresh cannot

keep the inner loop spinning within a single tries increment.

The record
Technical detail
CVSS v3.1
7.5 · HIGH
Vector
CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:H
CVSS v4.0
Not supplied
EPSS
0.00325 · 24.3th percentile
Published
2026-10-06T13:17Z
References (5)
EPSS history
Timeline
  • 07 OCT 03:43Z
    EPSS moved — → 0%
    epss
  • 06 OCT 08:44Z
    smb: client: fix use-after-free of iface in cifs_try_adding_channels()
    cvelistv5