Description
In the Linux kernel, the following vulnerability has been resolved: net/smc: do not dereference an unset send buffer on the SMC-D teardown path smc_close_stream_wait() calls smc_tx_prepared_sends() from inside its sk_wait_event() condition, and sk_wait_event() evaluates that condition once with the socket lock released. smcd_buf_detach() clears conn->sndbuf_desc from smc_conn_kill() under lock_sock(), so a link group terminating while a socket waits there leaves the helper dereferencing NULL, faulting out of close(). SIOCOUTQ reads the field by hand, and smc_close_cancel_work() drops the lock across two cancel_*_sync() calls. Sample the pointer once in the helper, report nothing prepared while it is unset, and bound the ioctl the same way. The receive tasklet dereferences the field directly in smc_cdc_msg_recv_action(), not through this helper; 1/2 is what keeps it from running that late.
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
21f6f41e82e59740e26e06e77bdf58dc7f6f08dd to < ab26e12dd5d2f43d939fcf456933a816e81d2e51affectedae2be35cbed2c8385e890147ea321a3fcc3ca5fa to < e3fcff8d22a6c9540748846cd800443a643553a6affectedae2be35cbed2c8385e890147ea321a3fcc3ca5fa to < f950e1b1f0aad334f9a9ee552c4dd5b794ebdd45affectedae2be35cbed2c8385e890147ea321a3fcc3ca5fa to < f517cf02033801a28f98d86ca613a3533cf066b3affectedae2be35cbed2c8385e890147ea321a3fcc3ca5fa to < b395dd319cea422239cb45b998fb38d7e373af87affected6.6.66 to < 6.6.157affected
Linux Linux
Default version status: affected
6.10affected0 to < 6.10unaffected6.6.157 to ≤ 6.6.*unaffected6.12.109 to ≤ 6.12.*unaffected6.18.50 to ≤ 6.18.*unaffected7.2.4 to ≤ 7.2.*unaffected7.3 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/ab26e12dd5d2f43d939fcf456933a816e81d2e51 ↗
- https://git.kernel.org/stable/c/e3fcff8d22a6c9540748846cd800443a643553a6 ↗
- https://git.kernel.org/stable/c/f950e1b1f0aad334f9a9ee552c4dd5b794ebdd45 ↗
- https://git.kernel.org/stable/c/f517cf02033801a28f98d86ca613a3533cf066b3 ↗
- https://git.kernel.org/stable/c/b395dd319cea422239cb45b998fb38d7e373af87 ↗