CVE-2026-97527 (GCVE-0-2026-97527)

Vulnerability from cvelistv5 – Published: 2026-09-25 10:21 – Updated: 2026-10-21 12:53
VLAI
Title
scsi: qla2xxx: Serialize NVMe unsol ctx list with a per-fcport lock
Summary
In the Linux kernel, the following vulnerability has been resolved: scsi: qla2xxx: Serialize NVMe unsol ctx list with a per-fcport lock The fcport->unsol_ctx_head list is modified from several contexts without a common lock. Entries are added in qla2xxx_process_purls_iocb() from the response queue ISR (under the qpair qp_lock), while they are removed from qla2xxx_process_purls_pkt() (DPC/purex worker), qla_nvme_xmt_ls_rsp() (NVMe-FC transport callback) and qla_nvme_release_lsrsp_cmd_kref() (SRB completion). The qpair qp_lock cannot serialize this per-fcport list since multiqueue adapters add entries through different qpairs, so a concurrent add and delete (or two concurrent deletes) can corrupt the list pointers. Introduce a dedicated per-fcport spinlock, unsol_ctx_lock, initialized in qla2x00_alloc_fcport(), and take it around every list_add_tail()/list_del() on unsol_ctx_head. The add nests under the existing qp_lock; no delete path takes qp_lock, so the lock order is consistent and deadlock free.
Assigner
Linux CNA under the mitre root
CNA scorecard D 53/100 over 7033 records in the last 180 days details
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: 875386b98857822b77ac7f95bdf367b70af5b78c , < 6c71726cdfda93ae169a75c7b1697eb870303125 (git)
Affected: 875386b98857822b77ac7f95bdf367b70af5b78c , < c1ee12eecbab9674fb73c9e00a93fac655d5a5dc (git)
Affected: 875386b98857822b77ac7f95bdf367b70af5b78c , < b211d138cad86f749826d6132db6388eded992d8 (git)
Affected: 875386b98857822b77ac7f95bdf367b70af5b78c , < 4d8ad6bc8cc5eff1870cef00a0d611f38f8b6bd0 (git)
Affected: 875386b98857822b77ac7f95bdf367b70af5b78c , < 76da0c43c63eb0496649e372ac64466364d0fe7d (git)
guessed Create a notification for this product.
Linux Linux Affected: 6.6
Unaffected: 0 , < 6.6 (semver)
Unaffected: 6.6.160 , ≤ 6.6.* (semver)
Unaffected: 6.12.112 , ≤ 6.12.* (semver)
Unaffected: 6.18.53 , ≤ 6.18.* (semver)
Unaffected: 7.2.7 , ≤ 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/scsi/qla2xxx/qla_def.h",
            "drivers/scsi/qla2xxx/qla_init.c",
            "drivers/scsi/qla2xxx/qla_nvme.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "6c71726cdfda93ae169a75c7b1697eb870303125",
              "status": "affected",
              "version": "875386b98857822b77ac7f95bdf367b70af5b78c",
              "versionType": "git"
            },
            {
              "lessThan": "c1ee12eecbab9674fb73c9e00a93fac655d5a5dc",
              "status": "affected",
              "version": "875386b98857822b77ac7f95bdf367b70af5b78c",
              "versionType": "git"
            },
            {
              "lessThan": "b211d138cad86f749826d6132db6388eded992d8",
              "status": "affected",
              "version": "875386b98857822b77ac7f95bdf367b70af5b78c",
              "versionType": "git"
            },
            {
              "lessThan": "4d8ad6bc8cc5eff1870cef00a0d611f38f8b6bd0",
              "status": "affected",
              "version": "875386b98857822b77ac7f95bdf367b70af5b78c",
              "versionType": "git"
            },
            {
              "lessThan": "76da0c43c63eb0496649e372ac64466364d0fe7d",
              "status": "affected",
              "version": "875386b98857822b77ac7f95bdf367b70af5b78c",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/scsi/qla2xxx/qla_def.h",
            "drivers/scsi/qla2xxx/qla_init.c",
            "drivers/scsi/qla2xxx/qla_nvme.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.6"
            },
            {
              "lessThan": "6.6",
              "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.112",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.18.*",
              "status": "unaffected",
              "version": "6.18.53",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "7.2.*",
              "status": "unaffected",
              "version": "7.2.7",
              "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": "6.6",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12.112",
                  "versionStartIncluding": "6.6",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18.53",
                  "versionStartIncluding": "6.6",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.2.7",
                  "versionStartIncluding": "6.6",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.3",
                  "versionStartIncluding": "6.6",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nscsi: qla2xxx: Serialize NVMe unsol ctx list with a per-fcport lock\n\nThe fcport-\u003eunsol_ctx_head list is modified from several contexts without\na common lock. Entries are added in qla2xxx_process_purls_iocb() from the\nresponse queue ISR (under the qpair qp_lock), while they are removed from\nqla2xxx_process_purls_pkt() (DPC/purex worker), qla_nvme_xmt_ls_rsp()\n(NVMe-FC transport callback) and qla_nvme_release_lsrsp_cmd_kref() (SRB\ncompletion). The qpair qp_lock cannot serialize this per-fcport list since\nmultiqueue adapters add entries through different qpairs, so a concurrent\nadd and delete (or two concurrent deletes) can corrupt the list pointers.\n\nIntroduce a dedicated per-fcport spinlock, unsol_ctx_lock, initialized in\nqla2x00_alloc_fcport(), and take it around every list_add_tail()/list_del()\non unsol_ctx_head. The add nests under the existing qp_lock; no delete path\ntakes qp_lock, so the lock order is consistent and deadlock free."
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 8.8,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:A - qla24xx_msix_rsp_q/qla2xxx_msix_rsp_q \u2192 qla24xx_process_response_queue dispatches PT_LS4_UNSOL (0x56) into qla2xxx_process_purls_iocb, which list_add_tail\u0027s uctx onto fcport-\u003eunsol_ctx_head. Those are unsolicited NVMe-FC LS frames a SAN N_Port put on the wire. FC/FCoE is a non-routable fabric, so Adjacent.\nAC:L - A fabric peer floods concurrent PT_LS4_UNSOL so ISR list_add_tail in qla2xxx_process_purls_iocb (qp_lock only; different qpairs on MQ) races list_del in qla2xxx_process_purls_pkt (DPC; nvme_fc_rcv_ls_req -E2BIG on oversized LS), qla_nvme_xmt_ls_rsp, or qla_nvme_release_lsrsp_cmd_kref. The attacker drives both sides.\nPR:N - qla2xxx_process_purls_iocb only needs qla2x00_find_fcport_by_nportid to match a non-deleted N_Port that completed NVMe PRLI (nvme_remote_port). The PT_LS4_UNSOL path has no uid, capability, or EDIF check; fabric zoning is network access, not a host privilege.\nUI:N - PT_LS4_UNSOL is consumed in the MSI-X response-queue handler and queued via qla24xx_queue_purex_item to PROCESS_PUREX_IOCB; nvme_fc later calls qla_nvme_xmt_ls_rsp from lsrcv_work. No victim mount, open, or other interactive step is required.\nS:U - Corrupting fcport-\u003eunsol_ctx_head and the qla_nvme_unsol_ctx list nodes stays inside the host kernel that owns the qla2xxx adapter. This is not a VM escape, IOMMU bypass, or other cross-authority impact.\nC:H - Unlocked list_add_tail versus list_del on unsol_ctx_head can leave head-\u003eprev pointing at a qla_nvme_unsol_ctx that qla2xxx_process_purls_pkt already kfree\u0027d, so the next add writes through freed slab. Reuse of that uctx is an arbitrary kernel read primitive.\nI:H - The same race lets list_del write prev/next of a neighbor uctx or the list head through a stale pointer, and a second delete of a poisoned node writes LIST_POISON or a reused object, which is a kernel write and control-flow hijack primitive.\nA:H - list_del on a corrupted unsol_ctx_head hits LIST_POISON or a bad dereference in qla2xxx_process_purls_pkt, qla_nvme_xmt_ls_rsp, or qla_nvme_release_lsrsp_cmd_kref and oopses or panics the host, taking down the NVMe-FC path."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-10-21T12:53:02.776Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/6c71726cdfda93ae169a75c7b1697eb870303125"
        },
        {
          "url": "https://git.kernel.org/stable/c/c1ee12eecbab9674fb73c9e00a93fac655d5a5dc"
        },
        {
          "url": "https://git.kernel.org/stable/c/b211d138cad86f749826d6132db6388eded992d8"
        },
        {
          "url": "https://git.kernel.org/stable/c/4d8ad6bc8cc5eff1870cef00a0d611f38f8b6bd0"
        },
        {
          "url": "https://git.kernel.org/stable/c/76da0c43c63eb0496649e372ac64466364d0fe7d"
        }
      ],
      "title": "scsi: qla2xxx: Serialize NVMe unsol ctx list with a per-fcport lock",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-97527",
    "datePublished": "2026-09-25T10:21:29.521Z",
    "dateReserved": "2026-09-24T16:01:01.152Z",
    "dateUpdated": "2026-10-21T12:53:02.776Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2026-97527",
      "date": "2026-10-29",
      "epss": "0.00344",
      "percentile": "0.27875"
    },
    "microsoft_vex": {
      "current_release_date": "2026-10-21T18:35:06.000Z",
      "cve": "CVE-2026-97527",
      "id": "msrc_CVE-2026-97527",
      "initial_release_date": "2026-09-28T00:26:08.000Z",
      "product_status:known_affected": "1",
      "product_status:under_investigation": "1",
      "source": "Microsoft CSAF VEX",
      "status": "final",
      "title": "scsi: qla2xxx: Serialize NVMe unsol ctx list with a per-fcport lock",
      "url": "https://msrc.microsoft.com/csaf/vex/2026/msrc_cve-2026-97527.json",
      "version": "2"
    },
    "nvd": {
      "cve": {
        "affected": [
          {
            "affectedData": [
              {
                "defaultStatus": "unaffected",
                "product": "Linux",
                "programFiles": [
                  "drivers/scsi/qla2xxx/qla_def.h",
                  "drivers/scsi/qla2xxx/qla_init.c",
                  "drivers/scsi/qla2xxx/qla_nvme.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "lessThan": "6c71726cdfda93ae169a75c7b1697eb870303125",
                    "status": "affected",
                    "version": "875386b98857822b77ac7f95bdf367b70af5b78c",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "c1ee12eecbab9674fb73c9e00a93fac655d5a5dc",
                    "status": "affected",
                    "version": "875386b98857822b77ac7f95bdf367b70af5b78c",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "b211d138cad86f749826d6132db6388eded992d8",
                    "status": "affected",
                    "version": "875386b98857822b77ac7f95bdf367b70af5b78c",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "4d8ad6bc8cc5eff1870cef00a0d611f38f8b6bd0",
                    "status": "affected",
                    "version": "875386b98857822b77ac7f95bdf367b70af5b78c",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "76da0c43c63eb0496649e372ac64466364d0fe7d",
                    "status": "affected",
                    "version": "875386b98857822b77ac7f95bdf367b70af5b78c",
                    "versionType": "git"
                  }
                ]
              },
              {
                "defaultStatus": "affected",
                "product": "Linux",
                "programFiles": [
                  "drivers/scsi/qla2xxx/qla_def.h",
                  "drivers/scsi/qla2xxx/qla_init.c",
                  "drivers/scsi/qla2xxx/qla_nvme.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "status": "affected",
                    "version": "6.6"
                  },
                  {
                    "lessThan": "6.6",
                    "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.112",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.18.*",
                    "status": "unaffected",
                    "version": "6.18.53",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "7.2.*",
                    "status": "unaffected",
                    "version": "7.2.7",
                    "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\nscsi: qla2xxx: Serialize NVMe unsol ctx list with a per-fcport lock\n\nThe fcport-\u003eunsol_ctx_head list is modified from several contexts without\na common lock. Entries are added in qla2xxx_process_purls_iocb() from the\nresponse queue ISR (under the qpair qp_lock), while they are removed from\nqla2xxx_process_purls_pkt() (DPC/purex worker), qla_nvme_xmt_ls_rsp()\n(NVMe-FC transport callback) and qla_nvme_release_lsrsp_cmd_kref() (SRB\ncompletion). The qpair qp_lock cannot serialize this per-fcport list since\nmultiqueue adapters add entries through different qpairs, so a concurrent\nadd and delete (or two concurrent deletes) can corrupt the list pointers.\n\nIntroduce a dedicated per-fcport spinlock, unsol_ctx_lock, initialized in\nqla2x00_alloc_fcport(), and take it around every list_add_tail()/list_del()\non unsol_ctx_head. The add nests under the existing qp_lock; no delete path\ntakes qp_lock, so the lock order is consistent and deadlock free."
          }
        ],
        "id": "CVE-2026-97527",
        "lastModified": "2026-10-21T13:21:11.907",
        "metrics": {
          "cvssMetricV31": [
            {
              "cvssData": {
                "attackComplexity": "LOW",
                "attackVector": "ADJACENT_NETWORK",
                "availabilityImpact": "HIGH",
                "baseScore": 8.8,
                "baseSeverity": "HIGH",
                "confidentialityImpact": "HIGH",
                "integrityImpact": "HIGH",
                "privilegesRequired": "NONE",
                "scope": "UNCHANGED",
                "userInteraction": "NONE",
                "vectorString": "CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
                "version": "3.1"
              },
              "exploitabilityScore": 2.8,
              "impactScore": 5.9,
              "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
              "type": "Secondary"
            }
          ]
        },
        "published": "2026-09-25T11:17:02.873",
        "references": [
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/4d8ad6bc8cc5eff1870cef00a0d611f38f8b6bd0"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/6c71726cdfda93ae169a75c7b1697eb870303125"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/76da0c43c63eb0496649e372ac64466364d0fe7d"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/b211d138cad86f749826d6132db6388eded992d8"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/c1ee12eecbab9674fb73c9e00a93fac655d5a5dc"
          }
        ],
        "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "vulnStatus": "Received"
      }
    },
    "redhat_vex": {
      "aggregate_severity": "Moderate",
      "current_release_date": "2026-10-25T20:47:00+00:00",
      "cve": "CVE-2026-97527",
      "id": "CVE-2026-97527",
      "initial_release_date": "2026-09-25T00:00:00+00:00",
      "product_status:known_affected": "247",
      "product_status:known_not_affected": "31",
      "source": "Red Hat CSAF VEX",
      "status": "final",
      "title": "kernel: scsi: qla2xxx: Serialize NVMe unsol ctx list with a per-fcport lock",
      "url": "https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-97527.json",
      "version": "3"
    },
    "suse_vex": {
      "aggregate_severity": "moderate",
      "current_release_date": "2026-10-20T00:17:15Z",
      "cve": "CVE-2026-97527",
      "id": "CVE-2026-97527",
      "initial_release_date": "2026-09-30T15:00:49Z",
      "product_status:known_affected": "30",
      "product_status:known_not_affected": "318",
      "product_status:recommended": "4",
      "source": "SUSE CSAF VEX",
      "status": "interim",
      "title": "SUSE CVE CVE-2026-97527",
      "url": "https://ftp.suse.com/pub/projects/security/csaf-vex/2026/cve-2026-97527.json",
      "version": "4"
    }
  }
}



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
How durations are calculated

Following the VTEM framework (Black Hat USA 2015), time to patch starts when the vendor or a coordinator was informed, total time to patch at discovery, and disclosure to patch at public disclosure; vendor response time runs from the report to its acknowledgement. Time to exploit and time unpatched start at the earliest discovery or report, falling back to public disclosure. Unpatched time ends at the first recorded patch, or the calculation time when no patch is recorded. Exploitation to patch shows the interval between those two events; a published proof of concept is a public exploit, not exploitation.

Each result shows its source dates. A negative interval means the end event came first; when date-only inputs leave the order open, the result says so. Date-only inputs are approximate. The earliest evidence wins: KEV report dates and sightings are labelled as such. Records describing another vulnerability are listed but never calculated from, and a PoC alone does not establish exploitation. Missing patch evidence does not prove that no patch exists. Filters below change the event list only.

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.