PT-2026-121840

CVE-2026-98870

·

Published

2026-10-23

·

Updated

2026-10-23

Description by

Score
N/A
Not available

No severity ratings or metrics are available. When they are, we'll update the corresponding info on the page.

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.
Vendors
Affected products
Related identifiers
Found an issue in the description? Have something to add? Feel free to write us 👾