Description
In the Linux kernel, the following vulnerability has been resolved: ksmbd: fix NULL-deref of opinfo->conn in oplock/lease break notifiers smb2_oplock_break_noti() and smb2_lease_break_noti() read opinfo->conn into a local with neither READ_ONCE() nor a NULL check. Both run from oplock_break() after opinfo_get_list() has dropped ci->m_lock, so a concurrent SMB2 LOGOFF (session_fd_check()) can set op->conn = NULL under ci->m_lock within that window. ksmbd_conn_r_count_inc(conn) then writes through NULL at offset 0xc4 -- a remotely triggerable oops. Guard both reads the way compare_guid_key() already does: read opinfo->conn with READ_ONCE() and return early if it is NULL, before allocating the work struct so nothing leaks. A NULL conn means the client is gone and the break is moot, so return 0; oplock_break() treats that as success and runs the normal teardown.
Affected products
- Linux / Linux8df4bcdb0a4232192b2445256c39b787d58ef14d – 945a86b21b40fb17183f5b27461baa6f03e2467f
- Linux / Linuxc8efcc786146a951091588e5fa7e3c754850cb3c – 1ff58dcfcab434ebb51649da33774fbb8e1f7b67
- Linux / Linuxc8efcc786146a951091588e5fa7e3c754850cb3c – e735dbd489e3ea02be78dba991056fe1138be51e
- Linux / Linuxc8efcc786146a951091588e5fa7e3c754850cb3c – 75e33deda658c1ab3a9336cbdb1436536f9b3660
- Linux / Linuxc8efcc786146a951091588e5fa7e3c754850cb3c – b003086d76968298f22e7cf62239833b5a3a06b1
- Linux / Linux6.6.32 – 6.6.143
- Linux / Linux6.9 – 6.9
- Linux / Linux0 – 6.9
- Linux / Linux6.6.143 – 6.6.*
- Linux / Linux6.12.94 – 6.12.*
- Linux / Linux6.18.36 – 6.18.*
- Linux / Linux7.0.13 – 7.0.*
- Linux / Linux7.1 – *
References
- MISChttps://git.kernel.org/stable/c/945a86b21b40fb17183f5b27461baa6f03e2467f
- MISChttps://git.kernel.org/stable/c/1ff58dcfcab434ebb51649da33774fbb8e1f7b67
- MISChttps://git.kernel.org/stable/c/e735dbd489e3ea02be78dba991056fe1138be51e
- MISChttps://git.kernel.org/stable/c/75e33deda658c1ab3a9336cbdb1436536f9b3660
- MISChttps://git.kernel.org/stable/c/b003086d76968298f22e7cf62239833b5a3a06b1