Description
In the Linux kernel, the following vulnerability has been resolved: ksmbd: pin conn during async oplock break notification smb2_oplock_break_noti() and smb2_lease_break_noti() store a ksmbd_conn pointer in an async ksmbd_work and then queue that work on ksmbd-io. The work only increments conn->r_count, which prevents teardown from passing the pending-request wait after the increment, but it does not pin the struct ksmbd_conn object. If connection teardown races with an oplock break notification, the last conn reference can be dropped before the queued worker finishes. The worker then uses the freed conn in ksmbd_conn_write() and ksmbd_conn_r_count_dec(). Take a real conn reference when publishing the conn pointer to the async work item, and drop it after the notification work has decremented r_count. Apply the same lifetime rule to lease break notification, which uses the same work->conn pattern.
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Linux Linux
Default version status: unaffected
8e6508c7ecb1802909f294827eff38f301d0c937 to < dab1493bc9d97947f1219d6823c2e2a28636021baffected09aeab68033161cb54f194da93e51a11aee6144b to < 0f72fc9659d7f585460d43c158055df5afdcffb6affecteda4261bbc33fbf99b99c80aa3a2c5097611802980 to < 793e1c7041b93af96ff87e678329bc16aee7ba88affected3aa660c059240e0c795217182cf7df32909dd917 to < 6ecb252efa0b413ac3d9979fb4eec247f8fc1258affected3aa660c059240e0c795217182cf7df32909dd917 to < 14062c74e5b25c27edcff7a2fe0dc701c930b372affected3aa660c059240e0c795217182cf7df32909dd917 to < aa5d8f3f96aa11a4a54ce993c11ce8af11c546f9affectedf17d1c63a76b0fe8e9c78023a86507a3a6d62cfaaffected6.6.84 to < 6.6.148affected6.12.20 to < 6.12.101affected6.13.8 to < 6.14affected
Linux Linux
Default version status: affected
6.14affected0 to < 6.14unaffected6.6.148 to ≤ 6.6.*unaffected6.12.101 to ≤ 6.12.*unaffected6.18.42 to ≤ 6.18.*unaffected7.1.6 to ≤ 7.1.*unaffected7.2 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/dab1493bc9d97947f1219d6823c2e2a28636021b ↗
- https://git.kernel.org/stable/c/0f72fc9659d7f585460d43c158055df5afdcffb6 ↗
- https://git.kernel.org/stable/c/793e1c7041b93af96ff87e678329bc16aee7ba88 ↗
- https://git.kernel.org/stable/c/6ecb252efa0b413ac3d9979fb4eec247f8fc1258 ↗
- https://git.kernel.org/stable/c/14062c74e5b25c27edcff7a2fe0dc701c930b372 ↗
- https://git.kernel.org/stable/c/aa5d8f3f96aa11a4a54ce993c11ce8af11c546f9 ↗