Skip to content
Heist/ feed
High

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

Type: advisorySource: Official CVE List1 source record

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 c

Announced Group revision 1
Original source ↗

CVE-2026-89974

Primary source · Revision 1

Imported from structured advisory data. Source references identify upstream records or fields; verify affected versions and your deployed configuration.

Security context

Source reference: cve:CVE-2026-89974

Linux

Source reference: /containers/cna/affected/0/product

Affected versions
Not stated in this record
Fixed versions
Not stated in this record
Prerequisites
Not stated in this record

Linux

Source reference: /containers/cna/affected/1/product

Affected versions
Not stated in this record
Fixed versions
Not stated in this record
Prerequisites
Not stated in this record

Structured affected-version data

Original package identities and version rules from this source.

[
  {
    "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
    "vendor": "Linux",
    "product": "Linux",
    "versions": [
      {
        "status": "affected",
        "version": "1a9e218195a55d0a31e8cbe263aa2f618580ef1d",
        "lessThan": "8bd14aa065112b4d523bea690027c7527a6224f6",
        "versionType": "git"
      },
      {
        "status": "affected",
        "version": "1a9e218195a55d0a31e8cbe263aa2f618580ef1d",
        "lessThan": "7df913a7ced5d7349f0b23bdcf25ad54fe83a1c1",
        "versionType": "git"
      },
      {
        "status": "affected",
        "version": "1a9e218195a55d0a31e8cbe263aa2f618580ef1d",
        "lessThan": "5f89d68c00ccd1b25151da0bf660012380c2bad9",
        "versionType": "git"
      },
      {
        "status": "affected",
        "version": "1a9e218195a55d0a31e8cbe263aa2f618580ef1d",
        "lessThan": "56e6279266f6962bb2d38a54397e3c605165b0c5",
        "versionType": "git"
      }
    ],
    "programFiles": [
      "drivers/nvme/host/fc.c"
    ],
    "defaultStatus": "unaffected"
  },
  {
    "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
    "vendor": "Linux",
    "product": "Linux",
    "versions": [
      {
        "status": "affected",
        "version": "6.11"
      },
      {
        "status": "unaffected",
        "version": "0",
        "lessThan": "6.11",
        "versionType": "semver"
      },
      {
        "status": "unaffected",
        "version": "6.12.110",
        "versionType": "semver",
        "lessThanOrEqual": "6.12.*"
      },
      {
        "status": "unaffected",
        "version": "6.18.51",
        "versionType": "semver",
        "lessThanOrEqual": "6.18.*"
      },
      {
        "status": "unaffected",
        "version": "7.2.5",
        "versionType": "semver",
        "lessThanOrEqual": "7.2.*"
      },
      {
        "status": "unaffected",
        "version": "7.3",
        "versionType": "original_commit_for_fix",
        "lessThanOrEqual": "*"
      }
    ],
    "programFiles": [
      "drivers/nvme/host/fc.c"
    ],
    "defaultStatus": "affected"
  }
]
Related CVEs
CVE-2026-89974

Source reference: /cveMetadata/cveId

Publisher severity

high

Source reference: /containers/cna/metrics

Event
#36415 · Revision 1
Added to Heist Feed
Publisher date
Read the original announcement