CVE-2026-98964 (GCVE-0-2026-98964)

Vulnerability from cvelistv5 – Published: 2026-10-23 12:19 – Updated: 2026-10-24 14:09
VLAI
Title
nvmet: use the local P2P device on metadata allocation failure
Summary
In the Linux kernel, the following vulnerability has been resolved: nvmet: use the local P2P device on metadata allocation failure nvmet_req_alloc_p2pmem_sgls() assigns req->p2p_dev only after the data and metadata SGL allocations succeed. If the data allocation succeeds but the metadata allocation fails, out_free_sg passes req->p2p_dev to pci_p2pmem_free_sgl() before that assignment has taken place. Pass the local p2p_dev argument instead, so cleanup uses the same PCI device as the successful data allocation.
Assigner
Linux CNA under the mitre root
CNA scorecard D 53/100 over 7063 records in the last 180 days details
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: bcd9a0797d73eeff659582f23277e7ab6e5f18f3 , < 3c231142c4f4bb96836469eb276026ec55940093 (git)
Affected: bcd9a0797d73eeff659582f23277e7ab6e5f18f3 , < 32f21607911a1f69c8f0f93a6c28fe6f8490aa98 (git)
Affected: bcd9a0797d73eeff659582f23277e7ab6e5f18f3 , < ce79a6c5cc1b8054ec8d3eba16adda4a36113438 (git)
Affected: bcd9a0797d73eeff659582f23277e7ab6e5f18f3 , < 73bf0f9579633b531098a475e6e55c9316763aed (git)
Affected: bcd9a0797d73eeff659582f23277e7ab6e5f18f3 , < 4aa9c0f377a4de5e8fddce76b34ee4529639a1ff (git)
Affected: c440cd080761b18a52cac20f2a42e5da1e3995af (git)
Affected: 8a452d62e7cea3c8a2676a3b89a9118755a1a271 (git)
Affected: 5.10.43 , < 5.11 (semver)
Affected: 5.12.10 , < 5.13 (semver)
guessed Create a notification for this product.
Linux Linux Affected: 5.13
Unaffected: 0 , < 5.13 (semver)
Unaffected: 6.6.160 , ≤ 6.6.* (semver)
Unaffected: 6.12.113 , ≤ 6.12.* (semver)
Unaffected: 6.18.57 , ≤ 6.18.* (semver)
Unaffected: 7.2.11 , ≤ 7.2.* (semver)
Unaffected: 7.3 , ≤ * (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/nvme/target/core.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "3c231142c4f4bb96836469eb276026ec55940093",
              "status": "affected",
              "version": "bcd9a0797d73eeff659582f23277e7ab6e5f18f3",
              "versionType": "git"
            },
            {
              "lessThan": "32f21607911a1f69c8f0f93a6c28fe6f8490aa98",
              "status": "affected",
              "version": "bcd9a0797d73eeff659582f23277e7ab6e5f18f3",
              "versionType": "git"
            },
            {
              "lessThan": "ce79a6c5cc1b8054ec8d3eba16adda4a36113438",
              "status": "affected",
              "version": "bcd9a0797d73eeff659582f23277e7ab6e5f18f3",
              "versionType": "git"
            },
            {
              "lessThan": "73bf0f9579633b531098a475e6e55c9316763aed",
              "status": "affected",
              "version": "bcd9a0797d73eeff659582f23277e7ab6e5f18f3",
              "versionType": "git"
            },
            {
              "lessThan": "4aa9c0f377a4de5e8fddce76b34ee4529639a1ff",
              "status": "affected",
              "version": "bcd9a0797d73eeff659582f23277e7ab6e5f18f3",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "c440cd080761b18a52cac20f2a42e5da1e3995af",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "8a452d62e7cea3c8a2676a3b89a9118755a1a271",
              "versionType": "git"
            },
            {
              "lessThan": "5.11",
              "status": "affected",
              "version": "5.10.43",
              "versionType": "semver"
            },
            {
              "lessThan": "5.13",
              "status": "affected",
              "version": "5.12.10",
              "versionType": "semver"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/nvme/target/core.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "5.13"
            },
            {
              "lessThan": "5.13",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.6.*",
              "status": "unaffected",
              "version": "6.6.160",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.12.*",
              "status": "unaffected",
              "version": "6.12.113",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.18.*",
              "status": "unaffected",
              "version": "6.18.57",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "7.2.*",
              "status": "unaffected",
              "version": "7.2.11",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "7.3",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.6.160",
                  "versionStartIncluding": "5.13",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12.113",
                  "versionStartIncluding": "5.13",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18.57",
                  "versionStartIncluding": "5.13",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.2.11",
                  "versionStartIncluding": "5.13",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.3",
                  "versionStartIncluding": "5.13",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionStartIncluding": "5.10.43",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionStartIncluding": "5.12.10",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nnvmet: use the local P2P device on metadata allocation failure\n\nnvmet_req_alloc_p2pmem_sgls() assigns req-\u003ep2p_dev only after the data\nand metadata SGL allocations succeed. If the data allocation succeeds\nbut the metadata allocation fails, out_free_sg passes req-\u003ep2p_dev to\npci_p2pmem_free_sgl() before that assignment has taken place.\n\nPass the local p2p_dev argument instead, so cleanup uses the same PCI\ndevice as the successful data allocation."
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 7.5,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:N - An NVMe/RDMA I/O capsule received by nvmet_rdma_recv_done() supplies the keyed-SGL length and RW NLB; nvmet_rdma_handle_command() -\u003e nvmet_req_init() -\u003e nvmet_bdev_parse_io_cmd() -\u003e nvmet_rdma_map_sgl_keyed() -\u003e nvmet_req_alloc_sgls() reaches patched nvmet_req_alloc_p2pmem_sgls(). The RDMA_PS_TCP listener binds IPv4/IPv6, so it is network-reachable.\nAC:L - On a P2P/PI-enabled target, nvmet_bdev_parse_io_cmd() derives metadata_len from cmd-\u003erw.length, while nvmet_rdma_map_sgl_keyed() copies the capsule\u0027s SGL length into transfer_len. The peer can use chosen lengths and concurrent requests to consume the finite P2P pool until data allocation succeeds and metadata allocation fails, without an uncontrolled race.\nPR:N - nvmet_alloc_ctrl() accepts a peer through nvmet_host_allowed() when allow_any_host is set; nvmet_setup_auth() then skips DH-HMAC-CHAP, and nvmet_check_auth_status() permits I/O. The remote initiator therefore needs no credential or local privilege.\nUI:N - After the target is listening, the peer alone establishes its queues and sends metadata I/O capsules handled by nvmet_rdma_recv_done(); no victim action is needed to reach nvmet_req_alloc_p2pmem_sgls().\nS:U - nvmet_req_alloc_p2pmem_sgls() faults while freeing target-kernel memory; it does not cross a VM, IOMMU, or other security-authority boundary.\nC:N - nvmet_rdma_rsp storage is zero-initialized and normal nvmet_req_free_sgls() clears req-\u003ep2p_dev; on metadata failure, nvmet_req_alloc_p2pmem_sgls() passes that still-NULL field to pci_p2pmem_free_sgl(). The resulting NULL dereference exposes no memory.\nI:N - pci_free_p2pmem() faults while evaluating pdev-\u003ep2pdma with pdev equal to NULL, before gen_pool_free_owner() can alter the pool. This is not an out-of-bounds write, use-after-free, or other attacker-controlled modification primitive.\nA:H - nvmet_req_alloc_p2pmem_sgls() invokes pci_p2pmem_free_sgl() with a NULL device when the controlled data-success/metadata-failure split occurs; pci_free_p2pmem() then causes a kernel NULL-pointer oops or panic, taking down the target host."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-10-24T14:09:40.850Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/3c231142c4f4bb96836469eb276026ec55940093"
        },
        {
          "url": "https://git.kernel.org/stable/c/32f21607911a1f69c8f0f93a6c28fe6f8490aa98"
        },
        {
          "url": "https://git.kernel.org/stable/c/ce79a6c5cc1b8054ec8d3eba16adda4a36113438"
        },
        {
          "url": "https://git.kernel.org/stable/c/73bf0f9579633b531098a475e6e55c9316763aed"
        },
        {
          "url": "https://git.kernel.org/stable/c/4aa9c0f377a4de5e8fddce76b34ee4529639a1ff"
        }
      ],
      "title": "nvmet: use the local P2P device on metadata allocation failure",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-98964",
    "datePublished": "2026-10-23T12:19:32.374Z",
    "dateReserved": "2026-09-25T10:25:14.383Z",
    "dateUpdated": "2026-10-24T14:09:40.850Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2026-98964",
      "date": "2026-10-26",
      "epss": "0.00538",
      "percentile": "0.45052"
    },
    "microsoft_vex": {
      "current_release_date": "2026-10-26T14:48:06.000Z",
      "cve": "CVE-2026-98964",
      "id": "msrc_CVE-2026-98964",
      "initial_release_date": "2026-10-24T01:10:06.000Z",
      "product_status:known_affected": "1",
      "product_status:under_investigation": "1",
      "source": "Microsoft CSAF VEX",
      "status": "final",
      "title": "nvmet: use the local P2P device on metadata allocation failure",
      "url": "https://msrc.microsoft.com/csaf/vex/2026/msrc_cve-2026-98964.json",
      "version": "3"
    },
    "nvd": {
      "cve": {
        "affected": [
          {
            "affectedData": [
              {
                "defaultStatus": "unaffected",
                "product": "Linux",
                "programFiles": [
                  "drivers/nvme/target/core.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "lessThan": "3c231142c4f4bb96836469eb276026ec55940093",
                    "status": "affected",
                    "version": "bcd9a0797d73eeff659582f23277e7ab6e5f18f3",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "32f21607911a1f69c8f0f93a6c28fe6f8490aa98",
                    "status": "affected",
                    "version": "bcd9a0797d73eeff659582f23277e7ab6e5f18f3",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "ce79a6c5cc1b8054ec8d3eba16adda4a36113438",
                    "status": "affected",
                    "version": "bcd9a0797d73eeff659582f23277e7ab6e5f18f3",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "73bf0f9579633b531098a475e6e55c9316763aed",
                    "status": "affected",
                    "version": "bcd9a0797d73eeff659582f23277e7ab6e5f18f3",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "4aa9c0f377a4de5e8fddce76b34ee4529639a1ff",
                    "status": "affected",
                    "version": "bcd9a0797d73eeff659582f23277e7ab6e5f18f3",
                    "versionType": "git"
                  },
                  {
                    "status": "affected",
                    "version": "c440cd080761b18a52cac20f2a42e5da1e3995af",
                    "versionType": "git"
                  },
                  {
                    "status": "affected",
                    "version": "8a452d62e7cea3c8a2676a3b89a9118755a1a271",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "5.11",
                    "status": "affected",
                    "version": "5.10.43",
                    "versionType": "semver"
                  },
                  {
                    "lessThan": "5.13",
                    "status": "affected",
                    "version": "5.12.10",
                    "versionType": "semver"
                  }
                ]
              },
              {
                "defaultStatus": "affected",
                "product": "Linux",
                "programFiles": [
                  "drivers/nvme/target/core.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "status": "affected",
                    "version": "5.13"
                  },
                  {
                    "lessThan": "5.13",
                    "status": "unaffected",
                    "version": "0",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.6.*",
                    "status": "unaffected",
                    "version": "6.6.160",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.12.*",
                    "status": "unaffected",
                    "version": "6.12.113",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.18.*",
                    "status": "unaffected",
                    "version": "6.18.57",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "7.2.*",
                    "status": "unaffected",
                    "version": "7.2.11",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "*",
                    "status": "unaffected",
                    "version": "7.3",
                    "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\nnvmet: use the local P2P device on metadata allocation failure\n\nnvmet_req_alloc_p2pmem_sgls() assigns req-\u003ep2p_dev only after the data\nand metadata SGL allocations succeed. If the data allocation succeeds\nbut the metadata allocation fails, out_free_sg passes req-\u003ep2p_dev to\npci_p2pmem_free_sgl() before that assignment has taken place.\n\nPass the local p2p_dev argument instead, so cleanup uses the same PCI\ndevice as the successful data allocation."
          }
        ],
        "id": "CVE-2026-98964",
        "lastModified": "2026-10-24T14:16:49.490",
        "metrics": {
          "cvssMetricV31": [
            {
              "cvssData": {
                "attackComplexity": "LOW",
                "attackVector": "NETWORK",
                "availabilityImpact": "HIGH",
                "baseScore": 7.5,
                "baseSeverity": "HIGH",
                "confidentialityImpact": "NONE",
                "integrityImpact": "NONE",
                "privilegesRequired": "NONE",
                "scope": "UNCHANGED",
                "userInteraction": "NONE",
                "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H",
                "version": "3.1"
              },
              "exploitabilityScore": 3.9,
              "impactScore": 3.6,
              "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
              "type": "Secondary"
            }
          ]
        },
        "published": "2026-10-23T13:17:17.830",
        "references": [
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/32f21607911a1f69c8f0f93a6c28fe6f8490aa98"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/3c231142c4f4bb96836469eb276026ec55940093"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/4aa9c0f377a4de5e8fddce76b34ee4529639a1ff"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/73bf0f9579633b531098a475e6e55c9316763aed"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/ce79a6c5cc1b8054ec8d3eba16adda4a36113438"
          }
        ],
        "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…

Drag nodes to arrange them. Double-click a related vulnerability to open it, or a source to visit its link. The Physics button on the left tunes the layout and the simulation; the legend at the bottom left hides or shows nodes by kind and by sighting type.

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.
Vulnerability timeline

Sightings and recorded dates, grouped by day · UTC

JSON
Events included in the timeline

Loading timeline…


    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.