CVE-2026-90309 (GCVE-0-2026-90309)

Vulnerability from cvelistv5 – Published: 2026-09-17 16:08 – Updated: 2026-09-18 17:54
VLAI
Title
RDMA/erdma: Hold CQ references when processing EQ events
Summary
In the Linux kernel, the following vulnerability has been resolved: RDMA/erdma: Hold CQ references when processing EQ events EQ handlers look up CQs from dev->cq_xa and invoke CQ completion or error callbacks outside the xarray lock. erdma_destroy_cq() can erase the CQ from the xarray and free its queue buffer and doorbell record while a previously scheduled EQ handler is still using the CQ. Add a CQ refcount and take a reference under the xarray lock with refcount_inc_not_zero(). Remove the CQ from the xarray before dropping the destroy-path reference, then wait for in-flight EQ users before releasing CQ resources.
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: 155055771704f8cbb5c176a4309b7dc30a50450c , < 610ef81797bb4f709e8675c1d8d093bb9ccdcbd8 (git)
Affected: 155055771704f8cbb5c176a4309b7dc30a50450c , < c0a83f29a24c7e7f8516630848ef6db4c174deed (git)
Affected: 155055771704f8cbb5c176a4309b7dc30a50450c , < 05b8ca493dd02319bca93c640b259c2ba51ef321 (git)
Affected: 155055771704f8cbb5c176a4309b7dc30a50450c , < 1fc9c1933959d2776a1ce7bf424251b8b5b586cd (git)
Affected: 155055771704f8cbb5c176a4309b7dc30a50450c , < 4545f355654d044d35a31cd01cc46f491a8a7c36 (git)
Affected: 155055771704f8cbb5c176a4309b7dc30a50450c , < 98df2aee1459ee1c62c70cbe9b370d2a532aea36 (git)
guessed Create a notification for this product.
Linux Linux Affected: 6.0
Unaffected: 0 , < 6.0 (semver)
Unaffected: 6.1.188 , ≤ 6.1.* (semver)
Unaffected: 6.6.157 , ≤ 6.6.* (semver)
Unaffected: 6.12.110 , ≤ 6.12.* (semver)
Unaffected: 6.18.52 , ≤ 6.18.* (semver)
Unaffected: 7.2.6 , ≤ 7.2.* (semver)
Unaffected: 7.3-rc1 , ≤ * (original_commit_for_fix)
guessed Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "drivers/infiniband/hw/erdma/erdma_eq.c",
            "drivers/infiniband/hw/erdma/erdma_verbs.c",
            "drivers/infiniband/hw/erdma/erdma_verbs.h"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "610ef81797bb4f709e8675c1d8d093bb9ccdcbd8",
              "status": "affected",
              "version": "155055771704f8cbb5c176a4309b7dc30a50450c",
              "versionType": "git"
            },
            {
              "lessThan": "c0a83f29a24c7e7f8516630848ef6db4c174deed",
              "status": "affected",
              "version": "155055771704f8cbb5c176a4309b7dc30a50450c",
              "versionType": "git"
            },
            {
              "lessThan": "05b8ca493dd02319bca93c640b259c2ba51ef321",
              "status": "affected",
              "version": "155055771704f8cbb5c176a4309b7dc30a50450c",
              "versionType": "git"
            },
            {
              "lessThan": "1fc9c1933959d2776a1ce7bf424251b8b5b586cd",
              "status": "affected",
              "version": "155055771704f8cbb5c176a4309b7dc30a50450c",
              "versionType": "git"
            },
            {
              "lessThan": "4545f355654d044d35a31cd01cc46f491a8a7c36",
              "status": "affected",
              "version": "155055771704f8cbb5c176a4309b7dc30a50450c",
              "versionType": "git"
            },
            {
              "lessThan": "98df2aee1459ee1c62c70cbe9b370d2a532aea36",
              "status": "affected",
              "version": "155055771704f8cbb5c176a4309b7dc30a50450c",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/infiniband/hw/erdma/erdma_eq.c",
            "drivers/infiniband/hw/erdma/erdma_verbs.c",
            "drivers/infiniband/hw/erdma/erdma_verbs.h"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.0"
            },
            {
              "lessThan": "6.0",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.1.*",
              "status": "unaffected",
              "version": "6.1.188",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.6.*",
              "status": "unaffected",
              "version": "6.6.157",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.12.*",
              "status": "unaffected",
              "version": "6.12.110",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.18.*",
              "status": "unaffected",
              "version": "6.18.52",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "7.2.*",
              "status": "unaffected",
              "version": "7.2.6",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "7.3-rc1",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.1.188",
                  "versionStartIncluding": "6.0",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.6.157",
                  "versionStartIncluding": "6.0",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12.110",
                  "versionStartIncluding": "6.0",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18.52",
                  "versionStartIncluding": "6.0",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.2.6",
                  "versionStartIncluding": "6.0",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.3-rc1",
                  "versionStartIncluding": "6.0",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nRDMA/erdma: Hold CQ references when processing EQ events\n\nEQ handlers look up CQs from dev-\u003ecq_xa and invoke CQ completion or\nerror callbacks outside the xarray lock. erdma_destroy_cq() can erase the\nCQ from the xarray and free its queue buffer and doorbell record while a\npreviously scheduled EQ handler is still using the CQ.\n\nAdd a CQ refcount and take a reference under the xarray lock with\nrefcount_inc_not_zero(). Remove the CQ from the xarray before dropping\nthe destroy-path reference, then wait for in-flight EQ users before\nreleasing CQ resources."
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 7.8,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:L - The UAF is reached by IB_USER_VERBS_CMD_DESTROY_CQ/UVERBS_METHOD_CQ_DESTROY on /dev/infiniband/uverbsN racing erdma_ceq_completion_handler and erdma_aeq_event_handler; CEQE/AEQE CQNs are written by the ERDMA NIC for locally created CQs, not parsed from a remote RoCE/iWARP message.\nAC:L - The attacker drives both sides: userspace SQ/RQ doorbells via erdma_mmap (or ib_uverbs_post_send) make the NIC post CEQEs and schedule the CEQ tasklet, while another thread runs ib_uverbs_destroy_cq; pre-fix erdma_destroy_cq xa_erase\u0027d the CQ with no ref wait, so the race is attacker-controlled.\nPR:L - ib_uverbs_open allows CQ create/destroy with no capability check; uverbs_devnode sets /dev/infiniband/uverbsN to mode 0666, and erdma_alloc_ucontext/erdma_create_cq/erdma_destroy_cq do not require CAP_NET_ADMIN or init-namespace root.\nUI:N - The attacker creates the CQ via ib_uverbs_create_cq, generates EQ events from their own QPs, and tears it down via ib_uverbs_destroy_cq/uverbs_free_cq on that uverbs fd; no other user must mount, open a file, or otherwise act.\nS:U - The dangling erdma_cq is used inside the same host kernel that issued the uverbs destroy (comp_handler/event_handler on ibcq); this is in-kernel privilege escalation, not a KVM/Xen guest-to-host or IOMMU/DMA boundary bypass.\nC:H - After ib_destroy_cq_user kfree(cq), erdma_ceq_completion_handler still reads cq-\u003eibcq.comp_handler and cq-\u003eibcq.cq_context from the freed object, and ib_uverbs_comp_handler then follows cq-\u003euobject, giving a UAF read of kernel heap.\nI:H - The same dangling pointer is used to invoke cq-\u003eibcq.comp_handler (and on AEQ CQ_ERR, cq-\u003eibcq.event_handler); kernel CQs also do cq-\u003ekern_cq.cmdsn++. Calling a function pointer from a freed erdma_cq is an arbitrary-write/control-flow hijack primitive.\nA:H - erdma_ceq_completion_handler or erdma_aeq_event_handler dereferencing the kfree\u0027d erdma_cq (junk comp_handler/uobject) oopses the kernel, and repeating create_cq/destroy_cq while CEQ/AEQ events are in flight panics the host."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-09-18T17:54:28.510Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/610ef81797bb4f709e8675c1d8d093bb9ccdcbd8"
        },
        {
          "url": "https://git.kernel.org/stable/c/c0a83f29a24c7e7f8516630848ef6db4c174deed"
        },
        {
          "url": "https://git.kernel.org/stable/c/05b8ca493dd02319bca93c640b259c2ba51ef321"
        },
        {
          "url": "https://git.kernel.org/stable/c/1fc9c1933959d2776a1ce7bf424251b8b5b586cd"
        },
        {
          "url": "https://git.kernel.org/stable/c/4545f355654d044d35a31cd01cc46f491a8a7c36"
        },
        {
          "url": "https://git.kernel.org/stable/c/98df2aee1459ee1c62c70cbe9b370d2a532aea36"
        }
      ],
      "title": "RDMA/erdma: Hold CQ references when processing EQ events",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-90309",
    "datePublished": "2026-09-17T16:08:30.346Z",
    "dateReserved": "2026-09-11T19:38:34.800Z",
    "dateUpdated": "2026-09-18T17:54:28.510Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2026-90309",
      "date": "2026-09-25",
      "epss": "0.00176",
      "percentile": "0.06301"
    },
    "microsoft_vex": {
      "current_release_date": "2026-09-24T01:35:00.000Z",
      "cve": "CVE-2026-90309",
      "id": "msrc_CVE-2026-90309",
      "initial_release_date": "2026-09-19T01:12:44.000Z",
      "product_status:fixed": "1",
      "product_status:known_affected": "2",
      "source": "Microsoft CSAF VEX",
      "status": "final",
      "title": "RDMA/erdma: Hold CQ references when processing EQ events",
      "url": "https://msrc.microsoft.com/csaf/vex/2026/msrc_cve-2026-90309.json",
      "version": "4"
    },
    "nvd": {
      "cve": {
        "affected": [
          {
            "affectedData": [
              {
                "defaultStatus": "unaffected",
                "product": "Linux",
                "programFiles": [
                  "drivers/infiniband/hw/erdma/erdma_eq.c",
                  "drivers/infiniband/hw/erdma/erdma_verbs.c",
                  "drivers/infiniband/hw/erdma/erdma_verbs.h"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "lessThan": "610ef81797bb4f709e8675c1d8d093bb9ccdcbd8",
                    "status": "affected",
                    "version": "155055771704f8cbb5c176a4309b7dc30a50450c",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "c0a83f29a24c7e7f8516630848ef6db4c174deed",
                    "status": "affected",
                    "version": "155055771704f8cbb5c176a4309b7dc30a50450c",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "05b8ca493dd02319bca93c640b259c2ba51ef321",
                    "status": "affected",
                    "version": "155055771704f8cbb5c176a4309b7dc30a50450c",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "1fc9c1933959d2776a1ce7bf424251b8b5b586cd",
                    "status": "affected",
                    "version": "155055771704f8cbb5c176a4309b7dc30a50450c",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "4545f355654d044d35a31cd01cc46f491a8a7c36",
                    "status": "affected",
                    "version": "155055771704f8cbb5c176a4309b7dc30a50450c",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "98df2aee1459ee1c62c70cbe9b370d2a532aea36",
                    "status": "affected",
                    "version": "155055771704f8cbb5c176a4309b7dc30a50450c",
                    "versionType": "git"
                  }
                ]
              },
              {
                "defaultStatus": "affected",
                "product": "Linux",
                "programFiles": [
                  "drivers/infiniband/hw/erdma/erdma_eq.c",
                  "drivers/infiniband/hw/erdma/erdma_verbs.c",
                  "drivers/infiniband/hw/erdma/erdma_verbs.h"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "status": "affected",
                    "version": "6.0"
                  },
                  {
                    "lessThan": "6.0",
                    "status": "unaffected",
                    "version": "0",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.1.*",
                    "status": "unaffected",
                    "version": "6.1.188",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.6.*",
                    "status": "unaffected",
                    "version": "6.6.157",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.12.*",
                    "status": "unaffected",
                    "version": "6.12.110",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.18.*",
                    "status": "unaffected",
                    "version": "6.18.52",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "7.2.*",
                    "status": "unaffected",
                    "version": "7.2.6",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "*",
                    "status": "unaffected",
                    "version": "7.3-rc1",
                    "versionType": "original_commit_for_fix"
                  }
                ]
              }
            ],
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
          }
        ],
        "cveTags": [],
        "descriptions": [
          {
            "lang": "en",
            "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nRDMA/erdma: Hold CQ references when processing EQ events\n\nEQ handlers look up CQs from dev-\u003ecq_xa and invoke CQ completion or\nerror callbacks outside the xarray lock. erdma_destroy_cq() can erase the\nCQ from the xarray and free its queue buffer and doorbell record while a\npreviously scheduled EQ handler is still using the CQ.\n\nAdd a CQ refcount and take a reference under the xarray lock with\nrefcount_inc_not_zero(). Remove the CQ from the xarray before dropping\nthe destroy-path reference, then wait for in-flight EQ users before\nreleasing CQ resources."
          }
        ],
        "id": "CVE-2026-90309",
        "lastModified": "2026-09-18T18:17:52.977",
        "metrics": {
          "cvssMetricV31": [
            {
              "cvssData": {
                "attackComplexity": "LOW",
                "attackVector": "LOCAL",
                "availabilityImpact": "HIGH",
                "baseScore": 7.8,
                "baseSeverity": "HIGH",
                "confidentialityImpact": "HIGH",
                "integrityImpact": "HIGH",
                "privilegesRequired": "LOW",
                "scope": "UNCHANGED",
                "userInteraction": "NONE",
                "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
                "version": "3.1"
              },
              "exploitabilityScore": 1.8,
              "impactScore": 5.9,
              "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
              "type": "Secondary"
            }
          ]
        },
        "published": "2026-09-17T17:17:28.637",
        "references": [
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/05b8ca493dd02319bca93c640b259c2ba51ef321"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/1fc9c1933959d2776a1ce7bf424251b8b5b586cd"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/4545f355654d044d35a31cd01cc46f491a8a7c36"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/610ef81797bb4f709e8675c1d8d093bb9ccdcbd8"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/98df2aee1459ee1c62c70cbe9b370d2a532aea36"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/c0a83f29a24c7e7f8516630848ef6db4c174deed"
          }
        ],
        "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "vulnStatus": "Received"
      }
    }
  }
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.

Sightings

Author Source Type Date Other

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or observed by the user.
  • Confirmed: The vulnerability has been validated from an analyst's perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
  • Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
  • Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
  • Not confirmed: The user expressed doubt about the validity of the vulnerability.
  • Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.

Loading…

Loading…

Loading…

Related by attack behaviour

Vulnerabilities whose description is nearest to this one in the vector space of the CIRCL/vulnerability-attack-technique-biencoder model. This is a similarity search over the bi-encoder space (plain cosine), not a classification, and it has no measured accuracy.


Loading…