{
    "dataType": "CVE_RECORD",
    "dataVersion": "5.2",
    "cveMetadata": {
        "cveId": "CVE-2025-21885",
        "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "state": "PUBLISHED",
        "assignerShortName": "Linux",
        "dateReserved": "2024-12-29T08:45:45.782Z",
        "datePublished": "2025-03-27T14:57:13.219Z",
        "dateUpdated": "2026-08-05T11:55:07.964Z"
    },
    "containers": {
        "cna": {
            "providerMetadata": {
                "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
                "shortName": "Linux",
                "dateUpdated": "2026-08-05T11:55:07.964Z"
            },
            "descriptions": [
                {
                    "lang": "en",
                    "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nRDMA/bnxt_re: Fix the page details for the srq created by kernel consumers\n\nWhile using nvme target with use_srq on, below kernel panic is noticed.\n\n[  549.698111] bnxt_en 0000:41:00.0 enp65s0np0: FEC autoneg off encoding: Clause 91 RS(544,514)\n[  566.393619] Oops: divide error: 0000 [#1] PREEMPT SMP NOPTI\n..\n[  566.393799]  <TASK>\n[  566.393807]  ? __die_body+0x1a/0x60\n[  566.393823]  ? die+0x38/0x60\n[  566.393835]  ? do_trap+0xe4/0x110\n[  566.393847]  ? bnxt_qplib_alloc_init_hwq+0x1d4/0x580 [bnxt_re]\n[  566.393867]  ? bnxt_qplib_alloc_init_hwq+0x1d4/0x580 [bnxt_re]\n[  566.393881]  ? do_error_trap+0x7c/0x120\n[  566.393890]  ? bnxt_qplib_alloc_init_hwq+0x1d4/0x580 [bnxt_re]\n[  566.393911]  ? exc_divide_error+0x34/0x50\n[  566.393923]  ? bnxt_qplib_alloc_init_hwq+0x1d4/0x580 [bnxt_re]\n[  566.393939]  ? asm_exc_divide_error+0x16/0x20\n[  566.393966]  ? bnxt_qplib_alloc_init_hwq+0x1d4/0x580 [bnxt_re]\n[  566.393997]  bnxt_qplib_create_srq+0xc9/0x340 [bnxt_re]\n[  566.394040]  bnxt_re_create_srq+0x335/0x3b0 [bnxt_re]\n[  566.394057]  ? srso_return_thunk+0x5/0x5f\n[  566.394068]  ? __init_swait_queue_head+0x4a/0x60\n[  566.394090]  ib_create_srq_user+0xa7/0x150 [ib_core]\n[  566.394147]  nvmet_rdma_queue_connect+0x7d0/0xbe0 [nvmet_rdma]\n[  566.394174]  ? lock_release+0x22c/0x3f0\n[  566.394187]  ? srso_return_thunk+0x5/0x5f\n\nPage size and shift info is set only for the user space SRQs.\nSet page size and page shift for kernel space SRQs also."
                }
            ],
            "metrics": [
                {
                    "cvssV3_1": {
                        "version": "3.1",
                        "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H",
                        "baseScore": 7.5,
                        "baseSeverity": "HIGH"
                    },
                    "scenarios": [
                        {
                            "lang": "en",
                            "value": "AV:N - The crash is reached from `nvmet_rdma_queue_connect()`, the handler for an inbound RDMA CM connect request on the NVMe-oF target's listening endpoint; bnxt_re is a RoCE device and RoCEv2 is UDP/IP-encapsulated and fully routable, so a remote off-segment initiator can drive the path.\nAC:L - The divide-by-zero is deterministic — `sg_info.pgsize` is unconditionally 0 for every kernel-created SRQ — so the very first connect request from the attacker triggers it with no race, timing, or memory-layout dependency.\nPR:N - SRQ allocation happens in `nvmet_rdma_find_get_device()` at the top of the connect-request handler, before the NVMe fabrics Connect command, host-NQN allow-list checks, or any authentication, so an entirely unauthenticated remote peer reaches it.\nUI:N - The target processes inbound RDMA CM connect requests autonomously; no local user or administrator action is needed once the nvmet-rdma port is listening.\nS:U - The fault is a divide error inside the kernel affecting only the host kernel's own resources, with no crossing of a VM, IOMMU, or other security authority boundary.\nC:N - The zero divisor causes a `#DE` trap before any allocation, pointer arithmetic, or buffer access occurs, so no out-of-bounds read or information disclosure primitive exists.\nI:N - No memory is corrupted or written out of bounds — the failure is a CPU exception on the division itself, giving no write or control-flow primitive.\nA:H - The divide error Oopses the RDMA CM workqueue thread while `device_list_mutex` and the cma `handler_mutex` are held, permanently deadlocking nvmet-rdma and RDMA connection management, and produces a full kernel panic with `panic_on_oops=1`."
                        }
                    ]
                }
            ],
            "affected": [
                {
                    "product": "Linux",
                    "vendor": "Linux",
                    "defaultStatus": "unaffected",
                    "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                    "programFiles": [
                        "drivers/infiniband/hw/bnxt_re/ib_verbs.c"
                    ],
                    "versions": [
                        {
                            "version": "0c4dcd602817502bb3dced7a834a13ef717d65a4",
                            "lessThan": "722c3db62bf60cd23acbdc8c4f445bfedae4498e",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "0c4dcd602817502bb3dced7a834a13ef717d65a4",
                            "lessThan": "2cf8e6b52aecb8fbb71c41fe5add3212814031a2",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "0c4dcd602817502bb3dced7a834a13ef717d65a4",
                            "lessThan": "b66535356a4834a234f99e16a97eb51f2c6c5a7d",
                            "status": "affected",
                            "versionType": "git"
                        }
                    ]
                },
                {
                    "product": "Linux",
                    "vendor": "Linux",
                    "defaultStatus": "affected",
                    "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                    "programFiles": [
                        "drivers/infiniband/hw/bnxt_re/ib_verbs.c"
                    ],
                    "versions": [
                        {
                            "version": "5.7",
                            "status": "affected"
                        },
                        {
                            "version": "0",
                            "lessThan": "5.7",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "6.12.18",
                            "lessThanOrEqual": "6.12.*",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "6.13.6",
                            "lessThanOrEqual": "6.13.*",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "6.14",
                            "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.7",
                                    "versionEndExcluding": "6.12.18"
                                },
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "5.7",
                                    "versionEndExcluding": "6.13.6"
                                },
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "5.7",
                                    "versionEndExcluding": "6.14"
                                }
                            ]
                        }
                    ]
                }
            ],
            "references": [
                {
                    "url": "https://git.kernel.org/stable/c/722c3db62bf60cd23acbdc8c4f445bfedae4498e"
                },
                {
                    "url": "https://git.kernel.org/stable/c/2cf8e6b52aecb8fbb71c41fe5add3212814031a2"
                },
                {
                    "url": "https://git.kernel.org/stable/c/b66535356a4834a234f99e16a97eb51f2c6c5a7d"
                }
            ],
            "title": "RDMA/bnxt_re: Fix the page details for the srq created by kernel consumers",
            "x_generator": {
                "engine": "bippy-1.2.0"
            }
        }
    }
}