{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2023-54237","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","state":"PUBLISHED","assignerShortName":"Linux","dateReserved":"2025-12-30T12:06:44.508Z","datePublished":"2025-12-30T12:11:27.028Z","dateUpdated":"2026-09-14T11:57:41.872Z"},"containers":{"cna":{"providerMetadata":{"orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","shortName":"Linux","dateUpdated":"2026-09-14T11:57:41.872Z"},"descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nnet/smc: fix potential panic dues to unprotected smc_llc_srv_add_link()\n\nThere is a certain chance to trigger the following panic:\n\nPID: 5900   TASK: ffff88c1c8af4100  CPU: 1   COMMAND: \"kworker/1:48\"\n #0 [ffff9456c1cc79a0] machine_kexec at ffffffff870665b7\n #1 [ffff9456c1cc79f0] __crash_kexec at ffffffff871b4c7a\n #2 [ffff9456c1cc7ab0] crash_kexec at ffffffff871b5b60\n #3 [ffff9456c1cc7ac0] oops_end at ffffffff87026ce7\n #4 [ffff9456c1cc7ae0] page_fault_oops at ffffffff87075715\n #5 [ffff9456c1cc7b58] exc_page_fault at ffffffff87ad0654\n #6 [ffff9456c1cc7b80] asm_exc_page_fault at ffffffff87c00b62\n    [exception RIP: ib_alloc_mr+19]\n    RIP: ffffffffc0c9cce3  RSP: ffff9456c1cc7c38  RFLAGS: 00010202\n    RAX: 0000000000000000  RBX: 0000000000000002  RCX: 0000000000000004\n    RDX: 0000000000000010  RSI: 0000000000000000  RDI: 0000000000000000\n    RBP: ffff88c1ea281d00   R8: 000000020a34ffff   R9: ffff88c1350bbb20\n    R10: 0000000000000000  R11: 0000000000000001  R12: 0000000000000000\n    R13: 0000000000000010  R14: ffff88c1ab040a50  R15: ffff88c1ea281d00\n    ORIG_RAX: ffffffffffffffff  CS: 0010  SS: 0018\n #7 [ffff9456c1cc7c60] smc_ib_get_memory_region at ffffffffc0aff6df [smc]\n #8 [ffff9456c1cc7c88] smcr_buf_map_link at ffffffffc0b0278c [smc]\n #9 [ffff9456c1cc7ce0] __smc_buf_create at ffffffffc0b03586 [smc]\n\nThe reason here is that when the server tries to create a second link,\nsmc_llc_srv_add_link() has no protection and may add a new link to\nlink group. This breaks the security environment protected by\nllc_conf_mutex."}],"metrics":[{"cvssV3_1":{"version":"3.1","vectorString":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","baseScore":9.8,"baseSeverity":"CRITICAL"},"scenarios":[{"lang":"en","value":"AV:N - The vulnerable window is entered only from the SMC-R server listen worker (`smc_listen_work` → `smc_listen_rdma_finish` → `smcr_serv_conf_first_link`) in response to an inbound remote connection, and the racing LLC messages (ADD_LINK/DELETE_LINK) arrive from the remote peer over the RoCE fabric. SMC-Rv2/RoCEv2 traffic is IP-routable and the CLC handshake is plain TCP, so a remote peer reaches this code.\nAC:L - The attacker controls both sides of the race — it initiates the first-contact connection that enters the unprotected `smc_llc_srv_add_link()` window, and independently drives the concurrent `llc_conf_mutex` holders (parallel connections into the same link group doing `smcr_buf_map_usable_links()`, peer-sent DELETE_LINK, or induced link-down), with unlimited retries.\nPR:N - SMC has no authentication at any point in the CLC or LLC handshake; any peer able to complete an SMC-negotiated TCP connection to the listening socket reaches this code path pre-authentication.\nUI:N - The listen worker processes inbound SMC connections automatically with no action from any local user; the whole flow runs in kernel workqueue context.\nS:U - The corruption is confined to kernel link-group and RDMA resource state within the same security authority; no VM, IOMMU, or sandbox boundary is crossed.\nC:H - Unsynchronized `smcr_link_init()`/`smcr_link_clear()` against `smcr_buf_map_usable_links()` yields use of freed/zeroed `ib_pd`, `ib_qp` and WR buffers and MRs registered against torn-down protection domains, memory corruption that can be leveraged to disclose kernel and RDMA buffer contents.\nI:H - Concurrent `smcr_link_clear()` on the same link is unguarded (`lnk->clearing` is a non-atomic bitfield), producing double `smc_ib_dealloc_protection_domain()`/`smc_ib_destroy_queue_pair()`/` smc_wr_free_link()` and a `memset()` of a live `struct smc_link` — double-free/use-after-free primitives usable for arbitrary write and control-flow hijack.\nA:H - The commit documents a reproducible kernel panic — page fault in `ib_alloc_mr()` with a NULL protection domain from `__smc_buf_create` → `smcr_buf_map_link` → `smc_ib_get_memory_region` — and the double-free paths crash the kernel as well."}]}],"affected":[{"product":"Linux","vendor":"Linux","defaultStatus":"unaffected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["net/smc/af_smc.c"],"versions":[{"version":"2d2209f2018943d4152a21eff5b76f1952e0b435","lessThan":"fe35c24b730d38b421da93ac5d493cb4495e8e54","status":"affected","versionType":"git"},{"version":"2d2209f2018943d4152a21eff5b76f1952e0b435","lessThan":"f2f46de98c11d41ac8d22765f47ba54ce5480a5b","status":"affected","versionType":"git"},{"version":"2d2209f2018943d4152a21eff5b76f1952e0b435","lessThan":"0c764cc271d3aa6528ae1b3394babf34ac01f775","status":"affected","versionType":"git"},{"version":"2d2209f2018943d4152a21eff5b76f1952e0b435","lessThan":"e40b801b3603a8f90b46acbacdea3505c27f01c0","status":"affected","versionType":"git"}]},{"product":"Linux","vendor":"Linux","defaultStatus":"affected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["net/smc/af_smc.c"],"versions":[{"version":"5.8","status":"affected"},{"version":"0","lessThan":"5.8","status":"unaffected","versionType":"semver"},{"version":"5.10.270","lessThanOrEqual":"5.10.*","status":"unaffected","versionType":"semver"},{"version":"6.1.16","lessThanOrEqual":"6.1.*","status":"unaffected","versionType":"semver"},{"version":"6.2.3","lessThanOrEqual":"6.2.*","status":"unaffected","versionType":"semver"},{"version":"6.3","lessThanOrEqual":"*","status":"unaffected","versionType":"original_commit_for_fix"}]}],"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.8","versionEndExcluding":"5.10.270"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.8","versionEndExcluding":"6.1.16"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.8","versionEndExcluding":"6.2.3"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.8","versionEndExcluding":"6.3"}]}]}],"references":[{"url":"https://git.kernel.org/stable/c/fe35c24b730d38b421da93ac5d493cb4495e8e54"},{"url":"https://git.kernel.org/stable/c/f2f46de98c11d41ac8d22765f47ba54ce5480a5b"},{"url":"https://git.kernel.org/stable/c/0c764cc271d3aa6528ae1b3394babf34ac01f775"},{"url":"https://git.kernel.org/stable/c/e40b801b3603a8f90b46acbacdea3505c27f01c0"}],"title":"net/smc: fix potential panic dues to unprotected smc_llc_srv_add_link()","x_generator":{"engine":"bippy-1.2.0"}}}}