CVE-2025-21805 (GCVE-0-2025-21805)
Vulnerability from cvelistv5
Published
2025-02-27 20:00
Modified
2026-08-05 11:54
Severity ?
Summary
In the Linux kernel, the following vulnerability has been resolved: RDMA/rtrs: Add missing deinit() call A warning is triggered when repeatedly connecting and disconnecting the rnbd: list_add corruption. prev->next should be next (ffff88800b13e480), but was ffff88801ecd1338. (prev=ffff88801ecd1340). WARNING: CPU: 1 PID: 36562 at lib/list_debug.c:32 __list_add_valid_or_report+0x7f/0xa0 Workqueue: ib_cm cm_work_handler [ib_cm] RIP: 0010:__list_add_valid_or_report+0x7f/0xa0 ? __list_add_valid_or_report+0x7f/0xa0 ib_register_event_handler+0x65/0x93 [ib_core] rtrs_srv_ib_dev_init+0x29/0x30 [rtrs_server] rtrs_ib_dev_find_or_add+0x124/0x1d0 [rtrs_core] __alloc_path+0x46c/0x680 [rtrs_server] ? rtrs_rdma_connect+0xa6/0x2d0 [rtrs_server] ? rcu_is_watching+0xd/0x40 ? __mutex_lock+0x312/0xcf0 ? get_or_create_srv+0xad/0x310 [rtrs_server] ? rtrs_rdma_connect+0xa6/0x2d0 [rtrs_server] rtrs_rdma_connect+0x23c/0x2d0 [rtrs_server] ? __lock_release+0x1b1/0x2d0 cma_cm_event_handler+0x4a/0x1a0 [rdma_cm] cma_ib_req_handler+0x3a0/0x7e0 [rdma_cm] cm_process_work+0x28/0x1a0 [ib_cm] ? _raw_spin_unlock_irq+0x2f/0x50 cm_req_handler+0x618/0xa60 [ib_cm] cm_work_handler+0x71/0x520 [ib_cm] Commit 667db86bcbe8 ("RDMA/rtrs: Register ib event handler") introduced a new element .deinit but never used it at all. Fix it by invoking the `deinit()` to appropriately unregister the IB event handler.
Impacted products
Vendor Product Version
Linux Linux Version: 667db86bcbe82e789d82c2e8c8c40756ec2e1999
Version: 667db86bcbe82e789d82c2e8c8c40756ec2e1999
Version: 667db86bcbe82e789d82c2e8c8c40756ec2e1999
Create a notification for this product.
Show details on NVD website


{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "drivers/infiniband/ulp/rtrs/rtrs.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "5a79cc9bc961fafe90787f86e8f53ba6fad8d63b",
              "status": "affected",
              "version": "667db86bcbe82e789d82c2e8c8c40756ec2e1999",
              "versionType": "git"
            },
            {
              "lessThan": "1af2c769032b6b334cd2a867d7d8c7cbbc527b2d",
              "status": "affected",
              "version": "667db86bcbe82e789d82c2e8c8c40756ec2e1999",
              "versionType": "git"
            },
            {
              "lessThan": "81468c4058a62e84e475433b83b3edc613294f5e",
              "status": "affected",
              "version": "667db86bcbe82e789d82c2e8c8c40756ec2e1999",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/infiniband/ulp/rtrs/rtrs.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.12"
            },
            {
              "lessThan": "6.12",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.12.*",
              "status": "unaffected",
              "version": "6.12.13",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.13.*",
              "status": "unaffected",
              "version": "6.13.2",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "6.14",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12.13",
                  "versionStartIncluding": "6.12",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.13.2",
                  "versionStartIncluding": "6.12",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.14",
                  "versionStartIncluding": "6.12",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nRDMA/rtrs: Add missing deinit() call\n\nA warning is triggered when repeatedly connecting and disconnecting the\nrnbd:\n list_add corruption. prev-\u003enext should be next (ffff88800b13e480), but was ffff88801ecd1338. (prev=ffff88801ecd1340).\n WARNING: CPU: 1 PID: 36562 at lib/list_debug.c:32 __list_add_valid_or_report+0x7f/0xa0\n Workqueue: ib_cm cm_work_handler [ib_cm]\n RIP: 0010:__list_add_valid_or_report+0x7f/0xa0\n  ? __list_add_valid_or_report+0x7f/0xa0\n  ib_register_event_handler+0x65/0x93 [ib_core]\n  rtrs_srv_ib_dev_init+0x29/0x30 [rtrs_server]\n  rtrs_ib_dev_find_or_add+0x124/0x1d0 [rtrs_core]\n  __alloc_path+0x46c/0x680 [rtrs_server]\n  ? rtrs_rdma_connect+0xa6/0x2d0 [rtrs_server]\n  ? rcu_is_watching+0xd/0x40\n  ? __mutex_lock+0x312/0xcf0\n  ? get_or_create_srv+0xad/0x310 [rtrs_server]\n  ? rtrs_rdma_connect+0xa6/0x2d0 [rtrs_server]\n  rtrs_rdma_connect+0x23c/0x2d0 [rtrs_server]\n  ? __lock_release+0x1b1/0x2d0\n  cma_cm_event_handler+0x4a/0x1a0 [rdma_cm]\n  cma_ib_req_handler+0x3a0/0x7e0 [rdma_cm]\n  cm_process_work+0x28/0x1a0 [ib_cm]\n  ? _raw_spin_unlock_irq+0x2f/0x50\n  cm_req_handler+0x618/0xa60 [ib_cm]\n  cm_work_handler+0x71/0x520 [ib_cm]\n\nCommit 667db86bcbe8 (\"RDMA/rtrs: Register ib event handler\") introduced a\nnew element .deinit but never used it at all. Fix it by invoking the\n`deinit()` to appropriately unregister the IB event handler."
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 9.8,
            "baseSeverity": "CRITICAL",
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:N - The rtrs server listens on IN6ADDR_ANY for RDMA CM connection requests and processes remote peers\u0027 connect-request private data in `rtrs_rdma_connect()`, which drives both the allocation and the free of the affected object; over RoCEv2 (UDP) and iWARP (TCP) this is IP-routable rather than fabric-local.\nAC:L - The dangling `ib_event_handler` is left registered on every teardown of the last path \u2014 deterministic, with no race to win and no precondition outside the attacker\u0027s control, since the attacker drives both the connect (register) and the disconnect (free) sides at will.\nPR:N - RTRS performs no authentication whatsoever; `rtrs_srv_rdma_cm_handler()` hands an unauthenticated CONNECT_REQUEST directly to `rtrs_rdma_connect()`, which validates only a magic constant and version before reaching `rtrs_ib_dev_find_or_add()`.\nUI:N - Exploitation requires only that the attacker open and tear down RDMA connections to the listening server; no action by any local user or administrator is involved.\nS:U - The corruption and its consequences are confined to the kernel\u0027s own security authority; no VM, IOMMU, or sandbox boundary is crossed.\nC:H - The freed `rtrs_ib_dev` remains linked in the IB core\u0027s device-wide handler list, so list traversal and the `handler-\u003ehandler()` dispatch dereference attacker-groomable freed heap memory in the generic kmalloc-96 cache, yielding read and control primitives suitable for disclosing arbitrary kernel memory.\nI:H - `ib_register_event_handler()`\u0027s `list_add_tail()` and any peer handler\u0027s `list_del()` write through pointers in the freed object, and `ib_dispatch_event_clients()` calls a function pointer read from it \u2014 giving both a write primitive and a direct control-flow hijack after heap spraying.\nA:H - The immediate observed effect is list corruption (WARNING with CONFIG_DEBUG_LIST, silent corruption and subsequent oops/panic without it), and any dispatched IB async event calls into freed memory, crashing the kernel."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T11:54:34.615Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/5a79cc9bc961fafe90787f86e8f53ba6fad8d63b"
        },
        {
          "url": "https://git.kernel.org/stable/c/1af2c769032b6b334cd2a867d7d8c7cbbc527b2d"
        },
        {
          "url": "https://git.kernel.org/stable/c/81468c4058a62e84e475433b83b3edc613294f5e"
        }
      ],
      "title": "RDMA/rtrs: Add missing deinit() call",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2025-21805",
    "datePublished": "2025-02-27T20:00:58.290Z",
    "dateReserved": "2024-12-29T08:45:45.771Z",
    "dateUpdated": "2026-08-05T11:54:34.615Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2"
}


Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Sightings

Author Source Type Date

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or seen somewhere by the user.
  • Confirmed: The vulnerability is confirmed from an analyst perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: This vulnerability was exploited and seen by the user reporting the sighting.
  • Patched: This vulnerability was successfully patched by the user reporting the sighting.
  • Not exploited: This vulnerability was not exploited or seen by the user reporting the sighting.
  • Not confirmed: The user expresses doubt about the veracity of the vulnerability.
  • Not patched: This vulnerability was not successfully patched by the user reporting the sighting.


Loading…

Loading…