CVE-2026-89974

HIGHPre-NVD 7.57.5—
EchelonGraph scoreHIGH confidence

Score 7.5 from GitHub Security Advisory (severity: HIGH) published 2026-09-16. A secondary CVSS source baseline 7.5; sources differ by 0.0.

Triggered by: GitHub Security Advisory CVSS
Sources: epss, ghsa, secondary
Trending — 3 sources updated this week
7.5EG
EchelonGraph verdictPlan mitigationSerious severity, but no confirmed exploitation yet.
  • High severity, but no confirmed exploitation yet
CISA-KEV: Not listedEPSS PROB: 0.3%CVSS: 7.5Exploit: None knownExposed services: Not assessed

No fix is confirmed yet — apply a workaround or compensating control (WAF / firewall / segmentation) and watch for the fix.

In the Linux kernel, the following vulnerability has been resolved:

nvme-fc: fix double free of fabrics options when nvme_add_ctrl() fails

nvmf_create_ctrl() owns the fabrics options and frees them whenever ->create_ctrl() returns an error, so a transport must not free them on its own error paths. nvme-fc tracks this by testing ctrl->ctrl.opts in nvme_fc_ctrl_free(), which requires nvme_fc_init_ctrl() to clear that pointer on every error exit.

The coupling is implicit, and commit 1a9e218195a5 ("nvme: split device add from initialization") broke it by adding a second error exit. When nvme_add_ctrl() fails, nvme_fc_init_ctrl() jumps to out_put_ctrl:, past the "ctrl->ctrl.opts = NULL" that only sits on the fail_ctrl: path, so nvme_fc_ctrl_free() frees the options and nvmf_create_ctrl() frees them a second time:

BUG: KASAN: slab-use-after-free in nvmf_free_options+0x30/0x190 nvmf_free_options+0x30/0x190 drivers/nvme/host/fabrics.c:1284 nvmf_create_ctrl drivers/nvme/host/fabrics.c:1374 [inline] Freed by task 5534: nvme_fc_ctrl_free drivers/nvme/host/fc.c:2374 [inline] nvme_fc_init_ctrl+0xe17/0x1450 drivers/nvme/host/fc.c:3605

nvme_add_ctrl() fails when dev_set_name() cannot allocate, so this is reachable under memory pressure or fault injection. Without KASAN the options are freed twice.

Rather than clear the pointer on the second exit as well, derive ownership the way nvme-tcp, nvme-rdma and nvme-loop do, from list membership: their free_ctrl leaves the options alone unless the controller made it onto the transport list.

The list cannot simply be populated on the success path as it is there. nvme-fc runs the initial connect synchronously via flush_delayed_work(), and the controller has to be reachable on rport->ctrl_list for the whole of it: nvme_fc_unregister_remoteport() needs to find it to signal connectivity loss, nvme_fc_match_disconn_ls() matches an incoming Disconnect Association LS against ctrl->association_id, which is only assigned during that window, nvme_fc_resume_controller() needs it on remoteport re-registration, and nvme_fc_existing_controller() uses it to reject a duplicate connect racing the one in flight.

Keep the insertion where it is and add a fail_unlist: label, falling into fail_ctrl:, for the error paths that run after it. The earlier error paths never reach the insertion and keep using fail_ctrl: directly, so the list is only touched where the controller is actually on it.

nvme_fc_ctrl_free() cannot use the plain "goto free_ctrl" the other transports use, because it still has to put_device(), release the rport reference and free the ida entry for resources taken before the insertion. Sample list_empty() under rport->lock instead.

ctrl->ctrl.opts also stays valid for the whole teardown now. That is not the bug being fixed, but it removes some fragility around the old idiom: nvme_free_ctrl() calls nvme_auth_free() before ->free_ctrl(), and ctrl_max_dhchaps() dereferences ctrl->opts without a NULL check when ctrl->dhchap_ctxs is set, which nvme-fc permits since NVMF_ALLOWED_OPTS allows the dhchap options. The nvme sysfs attributes that dereference ctrl->opts, such as hostnqn and address, evaluate their is_visible() test once at device_add() time and stay readable until cdev_device_del().

CVSS v3
7.5
EG Score
7.5HIGHhigh confidence
EG Risk
38
EG Risk 38/100CISA SSVC

EG Risk is EchelonGraph's 0–100 priority score: it fuses intrinsic severity with real-world exploitation and automatability so you can rank equal-severity CVEs and fix the most dangerous first. Higher = act sooner. Distinct from the 0–10 EG Score (severity).

How it’s computed
Severity75% × 45%
Exploitation0% × 40%
Automatability30% × 15%
CISA SSVC: Track at low or medium mission impact; Track or Attend at high (mission-essential systems).
Action: No fix is confirmed yet. Restrict network exposure of the affected system or apply the vendor's mitigation within your standard update timelines at low or medium mission impact and sooner than that at high, and watch the vendor's advisory for the fix.
EPSS PROB
0.3%
EPSS %ILE
25th
KEV
Not listed

CISA SSVCTrack at low or medium mission impact; Track or Attend at high (mission-essential systems).

No fix is confirmed yet. Restrict network exposure of the affected system or apply the vendor's mitigation within your standard update timelines at low or medium mission impact and sooner than that at high, and watch the vendor's advisory for the fix.

Exploitation none (no KEV listing, exploit record or EPSS ≥ 50%) · Automatable unknown (not published for this CVE) · Technical impact partial (CVSS below 9.0). Mission impact is CISA's Mission & Well-being decision point, and only you can judge it: high means the affected system is essential to your organisation's mission, or its compromise could cause irreversible harm to people. CISA's decision table

Published

September 16, 2026

Last Modified

September 16, 2026

Advisory Details (4)

Auto-updated Sep 16, 2026
No patch confirmed yet.
generic

nvme-fc: fix double free of fabrics options when nvme_add_ctrl() fails - kernel/git/stable/linux.git - Linux kernel stable tree

https://git.kernel.org/stable/c/8bd14aa065112b4d523bea690027c7527a6224f6
generic

nvme-fc: fix double free of fabrics options when nvme_add_ctrl() fails - kernel/git/stable/linux.git - Linux kernel stable tree

https://git.kernel.org/stable/c/7df913a7ced5d7349f0b23bdcf25ad54fe83a1c1
generic

nvme-fc: fix double free of fabrics options when nvme_add_ctrl() fails - kernel/git/stable/linux.git - Linux kernel stable tree

https://git.kernel.org/stable/c/5f89d68c00ccd1b25151da0bf660012380c2bad9
generic

nvme-fc: fix double free of fabrics options when nvme_add_ctrl() fails - kernel/git/stable/linux.git - Linux kernel stable tree

https://git.kernel.org/stable/c/56e6279266f6962bb2d38a54397e3c605165b0c5

Vendor Advisories for CVE-2026-89974(1)

These vendors published their own advisory mentioning this CVE — often with vendor-specific remediation steps + affected product lists not in NVD.

Affected Packages

(3 across 3 ecosystems)
Debian:12(1)
PackageVulnerable rangeFix by version rangeDependents
linux-6.126.12.100-1~deb12u1, 6.12.101-1~deb12u1, 6.12.107-1~deb12u1
  • every version up to 6.12.111-1~deb12u1: fixed in 6.12.111-1~deb12u1
—
Debian:13(1)
PackageVulnerable rangeFix by version rangeDependents
linux6.12.100-1 ... 6.12.96-1 (35 versions)
  • every version up to 6.12.111-1: fixed in 6.12.111-1
—
Debian:14(1)
PackageVulnerable rangeFix by version rangeDependents
linux6.12.100-1 ... 7.2~rc7-1~exp1 (179 versions)
  • every version up to 7.2.6-1: fixed in 7.2.6-1
—

Data Freshness Timeline

(refreshed 26× in last 7d / 77× in last 30d)

Each row is a source pipeline that fetched or updated this CVE on that date, with what changed. For example, "NVD update" means NVD published or revised its analysis for this CVE; "MITRE cvelistV5" means we ingested or refreshed it from the CNA feed. Most recent first.

  1. 2026-10-05 05:36 UTCEG score recompute
  2. 2026-10-05 05:36 UTCGHSA enrichment
  3. 2026-10-04 23:22 UTCEPSS rescore
  4. 2026-10-04 17:15 UTCGHSA enrichment
  5. 2026-10-04 04:44 UTCGHSA enrichment
  6. 2026-10-03 16:24 UTCEG score recompute
  7. 2026-10-03 16:24 UTCGHSA enrichment
  8. 2026-10-03 04:01 UTCEG score recompute
  9. 2026-10-03 04:01 UTCGHSA enrichment
  10. 2026-10-02 15:33 UTCGHSA enrichment
  11. 2026-10-02 03:12 UTCEG score recompute
  12. 2026-10-02 03:12 UTCGHSA enrichment
  13. 2026-10-01 19:51 UTCEPSS rescore
  14. 2026-10-01 14:38 UTCGHSA enrichment
  15. 2026-10-01 02:17 UTCEG score recompute
  16. 2026-10-01 02:17 UTCGHSA enrichment
  17. 2026-09-30 15:04 UTCEPSS rescore
  18. 2026-09-30 13:57 UTCGHSA enrichment
  19. 2026-09-30 01:35 UTCEG score recompute
  20. 2026-09-30 01:35 UTCGHSA enrichment
  21. 2026-09-29 13:14 UTCGHSA enrichment
  22. 2026-09-29 00:52 UTCEG score recompute
  23. 2026-09-29 00:52 UTCGHSA enrichment
  24. 2026-09-28 13:52 UTCEPSS rescore
  25. 2026-09-28 13:52 UTCEPSS rescore
Show 52 more
  1. 2026-09-28 12:32 UTCGHSA enrichment
  2. 2026-09-28 00:12 UTCEG score recompute
  3. 2026-09-28 00:12 UTCGHSA enrichment
  4. 2026-09-27 13:49 UTCEPSS rescore
  5. 2026-09-27 11:51 UTCGHSA enrichment
  6. 2026-09-26 23:30 UTCEG score recompute
  7. 2026-09-26 23:30 UTCGHSA enrichment
  8. 2026-09-26 15:59 UTCEPSS rescore
  9. 2026-09-26 11:03 UTCEG score recompute
  10. 2026-09-26 11:03 UTCGHSA enrichment
  11. 2026-09-25 22:34 UTCGHSA enrichment
  12. 2026-09-25 09:53 UTCGHSA enrichment
  13. 2026-09-24 21:32 UTCEG score recompute
  14. 2026-09-24 21:32 UTCGHSA enrichment
  15. 2026-09-24 14:04 UTCEPSS rescore
  16. 2026-09-24 08:32 UTCGHSA enrichment
  17. 2026-09-23 20:11 UTCEG score recompute
  18. 2026-09-23 20:11 UTCGHSA enrichment
  19. 2026-09-23 17:54 UTCEPSS rescore
  20. 2026-09-23 07:51 UTCGHSA enrichment
  21. 2026-09-22 19:30 UTCEG score recompute
  22. 2026-09-22 19:30 UTCGHSA enrichment
  23. 2026-09-22 16:01 UTCEPSS rescore
  24. 2026-09-22 07:09 UTCEG score recompute
  25. 2026-09-22 07:09 UTCGHSA enrichment
  26. 2026-09-21 21:09 UTCEPSS rescore
  27. 2026-09-21 18:49 UTCGHSA enrichment
  28. 2026-09-21 06:28 UTCEG score recompute
  29. 2026-09-21 06:28 UTCGHSA enrichment
  30. 2026-09-20 20:16 UTCEPSS rescore
  31. 2026-09-20 18:07 UTCGHSA enrichment
  32. 2026-09-20 05:46 UTCGHSA enrichment
  33. 2026-09-19 17:26 UTCEG score recompute
  34. 2026-09-19 17:26 UTCGHSA enrichment
  35. 2026-09-19 05:06 UTCEG score recompute
  36. 2026-09-19 05:06 UTCGHSA enrichment
  37. 2026-09-18 19:28 UTCEPSS rescore
  38. 2026-09-18 16:45 UTCGHSA enrichment
  39. 2026-09-18 04:24 UTCEG score recompute
  40. 2026-09-18 04:24 UTCGHSA enrichment
  41. 2026-09-17 19:32 UTCEPSS rescore
  42. 2026-09-17 16:04 UTCGHSA enrichment
  43. 2026-09-17 03:43 UTCEG score recompute
  44. 2026-09-17 03:43 UTCGHSA enrichment
  45. 2026-09-16 15:22 UTCEG score recompute
  46. 2026-09-16 15:22 UTCGHSA enrichment
  47. 2026-09-16 14:47 UTCEG score recompute▲ 7.50
  48. 2026-09-16 14:47 UTCGHSA enrichment
  49. 2026-09-16 14:45 UTCMITRE cvelistV5CVSS v3 → 7.5 · severity → HIGH
  50. 2026-09-16 11:21 UTCNVD update
  51. 2026-09-16 10:38 UTCEG score recompute
  52. 2026-09-16 10:36 UTCMITRE cvelistV5first tracked

Frequently asked(5)

What is CVE-2026-89974?
CVE-2026-89974 is a high vulnerability published on September 16, 2026. In the Linux kernel, the following vulnerability has been resolved: nvme-fc: fix double free of fabrics options when nvmeaddctrl() fails nvmfcreatectrl() owns the fabrics options and frees them whenever ->create_ctrl() returns an error, so a transport must not free them on its own error paths.…
When was CVE-2026-89974 disclosed?
CVE-2026-89974 was first published on September 16, 2026. EchelonGraph re-ingests CVE updates from NVD on a 2-hour cycle, so this page reflects the latest published state.
Is CVE-2026-89974 actively exploited?
CVE-2026-89974 is not currently on CISA's Known Exploited Vulnerabilities catalog. FIRST EPSS estimates a 0.3% probability of exploitation in the next 30 days (25th percentile of EPSS-scored CVEs).
What is the CVSS score of CVE-2026-89974?
CVE-2026-89974 has a CVSS base score of 7.5 (a secondary CVSS source that NVD displays; NVD's own analysis pending).
How do I remediate CVE-2026-89974?
No fix for CVE-2026-89974 is confirmed yet. Until one is published, restrict network exposure of the affected system or apply the vendor's mitigation — for example, keep it off the internet or limit it to trusted networks — and watch the vendor's advisory for the fix. The vendor advisories EchelonGraph has for CVE-2026-89974 are linked in the Vendor Advisories panel on this page.

Dependency Blast Radius

See which npm, PyPI, Go, and Maven packages are affected by CVE-2026-89974

Explore →

Is Your Infrastructure Affected by CVE-2026-89974?

EchelonGraph automatically scans your cloud infrastructure and maps CVE exposure using blast radius analysis.