{
    "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-08-05T09:18:17.165Z"
    },
    "containers": {
        "cna": {
            "providerMetadata": {
                "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
                "shortName": "Linux",
                "dateUpdated": "2026-08-05T09:18:17.165Z"
            },
            "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": "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": "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": "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/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"
            }
        }
    }
}