GCVE Workshop - 22 September 2026 (14:00-18:00), Luxembourg Before The Vulnopticon Conference - Registration

CVE-2026-89860 (GCVE-0-2026-89860)

Vulnerability from cvelistv5 – Published: 2026-09-16 10:31 – Updated: 2026-09-16 14:39
VLAI
Title
scsi: qla2xxx: Initialize NVMe abort_work once at submission
Summary
In the Linux kernel, the following vulnerability has been resolved: scsi: qla2xxx: Initialize NVMe abort_work once at submission qla_nvme_fcp_abort() and qla_nvme_ls_abort() ran INIT_WORK() on priv->abort_work immediately before schedule_work(). INIT_WORK() reinitializes the work_struct, resetting its list head and clearing the pending bit. If an abort is issued more than once for the same command (for example, concurrent transport teardown and a timeout-driven abort), the second INIT_WORK() reinitializes a work item that is already queued, which can corrupt the workqueue list and lead to crashes or a looping worker. Initialize priv->abort_work once at command submission, next to the existing per-command spin_lock_init(&priv->cmd_lock), and leave only schedule_work() in the abort paths. schedule_work() already does nothing when the work item is still pending, so a repeated abort no longer disturbs an in-flight work item. The command is not returned to the transport until the final kref_put()/release callback runs after abort_work has completed, so the work item is idle before priv is reused and the single submission-time INIT_WORK() is safe.
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: e473b3074104ee09227cfbba5f872e3ea15dd280 , < b403700ac62fbf3c310196386e125879a182efcf (git)
Affected: e473b3074104ee09227cfbba5f872e3ea15dd280 , < 6a1b50c4879c2e6a034e8e85f9c055f0eea157c7 (git)
Affected: e473b3074104ee09227cfbba5f872e3ea15dd280 , < 67f0d5187c29360388f7e1e503c627ec45d01089 (git)
Affected: e473b3074104ee09227cfbba5f872e3ea15dd280 , < f4aaa4a4e6f1da6f3abfd80e1917bef922287177 (git)
Affected: e473b3074104ee09227cfbba5f872e3ea15dd280 , < 7e85f6dbc85616de2172bce8eaf84b387a723cd1 (git)
guessed Create a notification for this product.
Linux Linux Affected: 4.17
Unaffected: 0 , < 4.17 (semver)
Unaffected: 6.6.157 , ≤ 6.6.* (semver)
Unaffected: 6.12.110 , ≤ 6.12.* (semver)
Unaffected: 6.18.51 , ≤ 6.18.* (semver)
Unaffected: 7.2.5 , ≤ 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/scsi/qla2xxx/qla_nvme.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "b403700ac62fbf3c310196386e125879a182efcf",
              "status": "affected",
              "version": "e473b3074104ee09227cfbba5f872e3ea15dd280",
              "versionType": "git"
            },
            {
              "lessThan": "6a1b50c4879c2e6a034e8e85f9c055f0eea157c7",
              "status": "affected",
              "version": "e473b3074104ee09227cfbba5f872e3ea15dd280",
              "versionType": "git"
            },
            {
              "lessThan": "67f0d5187c29360388f7e1e503c627ec45d01089",
              "status": "affected",
              "version": "e473b3074104ee09227cfbba5f872e3ea15dd280",
              "versionType": "git"
            },
            {
              "lessThan": "f4aaa4a4e6f1da6f3abfd80e1917bef922287177",
              "status": "affected",
              "version": "e473b3074104ee09227cfbba5f872e3ea15dd280",
              "versionType": "git"
            },
            {
              "lessThan": "7e85f6dbc85616de2172bce8eaf84b387a723cd1",
              "status": "affected",
              "version": "e473b3074104ee09227cfbba5f872e3ea15dd280",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "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": "4.17"
            },
            {
              "lessThan": "4.17",
              "status": "unaffected",
              "version": "0",
              "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.51",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "7.2.*",
              "status": "unaffected",
              "version": "7.2.5",
              "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.6.157",
                  "versionStartIncluding": "4.17",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12.110",
                  "versionStartIncluding": "4.17",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18.51",
                  "versionStartIncluding": "4.17",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.2.5",
                  "versionStartIncluding": "4.17",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.3-rc1",
                  "versionStartIncluding": "4.17",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nscsi: qla2xxx: Initialize NVMe abort_work once at submission\n\nqla_nvme_fcp_abort() and qla_nvme_ls_abort() ran INIT_WORK() on\npriv-\u003eabort_work immediately before schedule_work(). INIT_WORK()\nreinitializes the work_struct, resetting its list head and clearing the\npending bit. If an abort is issued more than once for the same command\n(for example, concurrent transport teardown and a timeout-driven abort),\nthe second INIT_WORK() reinitializes a work item that is already queued,\nwhich can corrupt the workqueue list and lead to crashes or a looping\nworker.\n\nInitialize priv-\u003eabort_work once at command submission, next to the\nexisting per-command spin_lock_init(\u0026priv-\u003ecmd_lock), and leave only\nschedule_work() in the abort paths. schedule_work() already does nothing\nwhen the work item is still pending, so a repeated abort no longer\ndisturbs an in-flight work item. The command is not returned to the\ntransport until the final kref_put()/release callback runs after\nabort_work has completed, so the work item is idle before priv is reused\nand the single submission-time INIT_WORK() is safe."
        }
      ],
      "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 - The bug is in the QLogic qla2xxx NVMe-FC initiator abort callbacks. A Fibre Channel peer (compromised NVMe-FC target or zoned SAN device) can stall commands to force timeouts and concurrently drop the link or send LOGO/RSCN so nvme_fc tears down, both of which call ls_abort/fcp_abort. FC is a non-IP fabric, so the vector is adjacent.\nAC:L - A malicious NVMe-FC target controls both sides of the documented race: delaying completions triggers timeout-driven abort while a concurrent link-down or logout triggers teardown abort. INIT_WORK() on still-queued abort_work is then attacker-influenceable under I/O load, so complexity is low.\nPR:N - The attacker is a Fibre Channel peer and needs no host credentials or capabilities. Fabric zoning/WWPN is a topology restriction captured by Adjacent, not an OS privilege, and NVMe in-band authentication is optional and off by default.\nUI:N - With ql2xnvmeenable defaulting to on, an established NVMe-FC association issues keepalives and I/O without user action. The target can stall those commands and flap the link without anyone mounting a volume or running a tool.\nS:U - Impact is kernel workqueue list corruption in the same host kernel that runs qla2xxx. That is ordinary kernel memory-corruption impact, not a VM escape, IOMMU bypass, or other crossed security authority.\nC:H - INIT_WORK() on a queued work_struct resets its list head without unlinking it, corrupting the workqueue and creating a use-after-free of work items. That UAF can be used to read kernel memory, so confidentiality is high.\nI:H - The same workqueue UAF can overwrite adjacent objects and hijack work-\u003efunc when the worker runs a freed item, yielding an arbitrary-write / control-flow primitive, so integrity is high.\nA:H - The corrupted workqueue can oops, panic, or run a looping worker, crashing or hanging the kernel, so availability is high."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-09-16T14:39:23.175Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/b403700ac62fbf3c310196386e125879a182efcf"
        },
        {
          "url": "https://git.kernel.org/stable/c/6a1b50c4879c2e6a034e8e85f9c055f0eea157c7"
        },
        {
          "url": "https://git.kernel.org/stable/c/67f0d5187c29360388f7e1e503c627ec45d01089"
        },
        {
          "url": "https://git.kernel.org/stable/c/f4aaa4a4e6f1da6f3abfd80e1917bef922287177"
        },
        {
          "url": "https://git.kernel.org/stable/c/7e85f6dbc85616de2172bce8eaf84b387a723cd1"
        }
      ],
      "title": "scsi: qla2xxx: Initialize NVMe abort_work once at submission",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-89860",
    "datePublished": "2026-09-16T10:31:32.263Z",
    "dateReserved": "2026-09-11T19:38:34.771Z",
    "dateUpdated": "2026-09-16T14:39:23.175Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2026-89860",
      "date": "2026-09-17",
      "epss": "0.00338",
      "percentile": "0.27116"
    },
    "microsoft_vex": {
      "current_release_date": "2026-09-17T01:01:37.000Z",
      "cve": "CVE-2026-89860",
      "id": "msrc_CVE-2026-89860",
      "initial_release_date": "2026-09-17T01:01:37.000Z",
      "product_status:known_affected": "1",
      "source": "Microsoft CSAF VEX",
      "status": "final",
      "title": "scsi: qla2xxx: Initialize NVMe abort_work once at submission",
      "url": "https://msrc.microsoft.com/csaf/vex/2026/msrc_cve-2026-89860.json",
      "version": "1"
    },
    "nvd": "{\"cve\":{\"id\":\"CVE-2026-89860\",\"sourceIdentifier\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"published\":\"2026-09-16T11:16:53.957\",\"lastModified\":\"2026-09-16T15:18:13.790\",\"vulnStatus\":\"Received\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"In the Linux kernel, the following vulnerability has been resolved:\\n\\nscsi: qla2xxx: Initialize NVMe abort_work once at submission\\n\\nqla_nvme_fcp_abort() and qla_nvme_ls_abort() ran INIT_WORK() on\\npriv-\u003eabort_work immediately before schedule_work(). INIT_WORK()\\nreinitializes the work_struct, resetting its list head and clearing the\\npending bit. If an abort is issued more than once for the same command\\n(for example, concurrent transport teardown and a timeout-driven abort),\\nthe second INIT_WORK() reinitializes a work item that is already queued,\\nwhich can corrupt the workqueue list and lead to crashes or a looping\\nworker.\\n\\nInitialize priv-\u003eabort_work once at command submission, next to the\\nexisting per-command spin_lock_init(\u0026priv-\u003ecmd_lock), and leave only\\nschedule_work() in the abort paths. schedule_work() already does nothing\\nwhen the work item is still pending, so a repeated abort no longer\\ndisturbs an in-flight work item. The command is not returned to the\\ntransport until the final kref_put()/release callback runs after\\nabort_work has completed, so the work item is idle before priv is reused\\nand the single submission-time INIT_WORK() is safe.\"}],\"affected\":[{\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"affectedData\":[{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"unaffected\",\"programFiles\":[\"drivers/scsi/qla2xxx/qla_nvme.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"e473b3074104ee09227cfbba5f872e3ea15dd280\",\"lessThan\":\"b403700ac62fbf3c310196386e125879a182efcf\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"e473b3074104ee09227cfbba5f872e3ea15dd280\",\"lessThan\":\"6a1b50c4879c2e6a034e8e85f9c055f0eea157c7\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"e473b3074104ee09227cfbba5f872e3ea15dd280\",\"lessThan\":\"67f0d5187c29360388f7e1e503c627ec45d01089\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"e473b3074104ee09227cfbba5f872e3ea15dd280\",\"lessThan\":\"f4aaa4a4e6f1da6f3abfd80e1917bef922287177\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"e473b3074104ee09227cfbba5f872e3ea15dd280\",\"lessThan\":\"7e85f6dbc85616de2172bce8eaf84b387a723cd1\",\"versionType\":\"git\",\"status\":\"affected\"}]},{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"affected\",\"programFiles\":[\"drivers/scsi/qla2xxx/qla_nvme.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"4.17\",\"status\":\"affected\"},{\"version\":\"0\",\"lessThan\":\"4.17\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.6.157\",\"lessThanOrEqual\":\"6.6.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.12.110\",\"lessThanOrEqual\":\"6.12.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.18.51\",\"lessThanOrEqual\":\"6.18.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"7.2.5\",\"lessThanOrEqual\":\"7.2.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"7.3-rc1\",\"lessThanOrEqual\":\"*\",\"versionType\":\"original_commit_for_fix\",\"status\":\"unaffected\"}]}]}],\"metrics\":{\"cvssMetricV31\":[{\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"type\":\"Secondary\",\"cvssData\":{\"version\":\"3.1\",\"vectorString\":\"CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H\",\"baseScore\":8.8,\"baseSeverity\":\"HIGH\",\"attackVector\":\"ADJACENT_NETWORK\",\"attackComplexity\":\"LOW\",\"privilegesRequired\":\"NONE\",\"userInteraction\":\"NONE\",\"scope\":\"UNCHANGED\",\"confidentialityImpact\":\"HIGH\",\"integrityImpact\":\"HIGH\",\"availabilityImpact\":\"HIGH\"},\"exploitabilityScore\":2.8,\"impactScore\":5.9}]},\"references\":[{\"url\":\"https://git.kernel.org/stable/c/67f0d5187c29360388f7e1e503c627ec45d01089\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/6a1b50c4879c2e6a034e8e85f9c055f0eea157c7\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/7e85f6dbc85616de2172bce8eaf84b387a723cd1\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/b403700ac62fbf3c310196386e125879a182efcf\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/f4aaa4a4e6f1da6f3abfd80e1917bef922287177\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"}]}}"
  }
}



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…

Detection rules are retrieved from Rulezet.

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…