CVE-2026-98870

ksmbd: remove stale channels from all sessions on teardown

State
Published
Severity
8.8 High
Published
Oct 23, 2026
Updated
Oct 24, 2026
Reserved
Sep 25, 2026

Read the record on cve.org

Description

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

ksmbd: remove stale channels from all sessions on teardown

ksmbd_sessions_deregister() removes a connection's channels from other sessions' channel lists only while conn->binding is still set:

if (conn->binding) { hash_for_each_safe(sessions_table, ...) ksmbd_chann_del(conn, sess); }

conn->binding is a transient flag: it is cleared once a binding SESSION_SETUP completes, and also by a subsequent non-binding SESSION_SETUP on the same connection (a reauthentication on a bound channel, or a new SessionId==0 setup). A connection that has bound a channel into another session's ksmbd_chann_list and then clears conn->binding leaves that channel behind when it disconnects: the channel, whose chann->conn points at the now freed struct ksmbd_conn, stays on the owner session's list.

When the owning connection later tears down, the second loop dereferences the stale channel:

xa_for_each(&sess->ksmbd_chann_list, chann_id, chann) if (chann->conn != conn) ksmbd_conn_set_exiting(chann->conn); /* freed */

which is a use-after-free write into the freed ksmbd_conn (the same stale channel is also walked by show_proc_session() through /proc). The session is leaked as well, because its channel list never empties.

Remove the conn->binding gate so a connection always removes its channels from every session on teardown.

Scores

CVSSScoreVectorSource
3.18.8 HighCVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:HLinux

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • b1b6ed903a6e2b3505a48706bcd499b447ef9e44 to before f8200bb4994e65a2e5c5b314789eeae39078619dAffected
  • 47b018dba6ec7ebf403fd2d1e713bc7acc9bbb23 to before 9cd6d714d3ca0cff296542dc989696884e41970fAffected
  • 9ef4dfd5edbd02f4bf10cd420a30896093d98a67 to before b145f9b56c87f9c23ad5464ab0844dbc1de12b36Affected
  • 5a5b0b7a01fe19b383b3c046546b5ae30c1a7d71 to before a15cae16f4432a5ad919ee633e31b07178492955Affected
  • faf8578c77f3d846aca9cd882c293e03eafcc6df to before b10665730fbf6b5e45fe422badcbbc3f0df96ef5Affected
  • e632f21a8bc0c59abc4960482836ac3782db93c0Affected
  • 5.15.222 to before 5.16Affected
LinuxLinux

    References

    Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.