CVE-2026-23306: scsi: pm8001: Fix use-after-free in pm8001_queue_command()
In the Linux kernel, the following vulnerability has been resolved:
scsi: pm8001: Fix use-after-free in pm8001_queue_command()
Commit e29c47fe8946 ("scsi: pm8001: Simplify pm8001_task_exec()") refactors
pm8001_queue_command(), however it introduces a potential cause of a double
free scenario when it changes the function to return -ENODEV in case of phy
down/device gone state.
In this path, pm8001_queue_command() updates task status and calls
task_done to indicate to upper layer that the task has been handled.
However, this also frees the underlying SAS task. A -ENODEV is then
returned to the caller. When libsas sas_ata_qc_issue() receives this error
value, it assumes the task wasn't handled/queued by LLDD and proceeds to
clean up and free the task again, resulting in a double free.
Since pm8001_queue_command() handles the SAS task in this case, it should
return 0 to the caller indicating that the task has been handled.
Security readout for executives and security teams
Plain-English summary
A Linux storage-driver flaw can free the same storage task twice when a device disappears or its physical link fails. The resulting kernel memory corruption could cause crashes or potentially compromise confidentiality and integrity. Exposure is narrower than a general Linux flaw because the vulnerable pm8001 storage path must be relevant.
Executive priority
Prioritize storage-critical systems using pm8001 for prompt validation and patching. The potential impact is high, but the local-access requirement and hardware-specific driver path reduce broad internet-facing risk. Lower priority only after confirming the vulnerable driver path is absent or the vendor fix is installed.
Technical view
Commit e29c47fe8946 changed pm8001_queue_command() to return -ENODEV after task_done had already freed the SAS task. libsas interprets that error as meaning the task was not handled and frees it again. The stable fixes return 0 because the driver already completed the task.
Likely exposure
Likely exposure is limited to Linux hosts running affected kernel code where the pm8001 driver and relevant SAS/ATA device path are used. The bundle lists versions across several kernel lines, but does not provide reliable distribution-package boundaries or clarify the anomalous version entry "0"; vendor backports require verification.
Exploitation context
CVSS 3.1 is 7.8, with local access, low privileges, low complexity, and no user interaction. Successful exploitation could affect confidentiality, integrity, and availability. The bundle reports KEV false and provides no cited evidence of active exploitation or a public exploit.
Researcher notes
The defect is a double free caused by disagreement between driver completion semantics and libsas error handling. Returning -ENODEV after task_done makes the upper layer perform duplicate cleanup; returning 0 communicates prior handling. The source bundle names stable fix commits but gives incomplete affected-range semantics, no CWE, and no exploitation evidence.
Mitigation direction
Apply a vendor kernel update containing the applicable upstream stable fix.
Confirm distribution backports rather than relying only on the displayed kernel version.
Restrict unnecessary local account access as a temporary compensating control.
Follow Linux distribution guidance if an applicable fixed package is not yet identified.
Validation and detection
Inventory hosts using the pm8001 driver and associated SAS or ATA storage.
Map installed kernel packages to vendor advisories and backported fix commits.
Verify the running kernel contains the applicable cited stable fix after updating.
Review kernel crashes and memory-corruption reports involving pm8001 or SAS task handling.
Generated from the cited source records. This long-tail analysis has not been individually reviewed by a named human.
Potential ATT&CK relevance
Conservative CVE-to-ATT&CK context
These mappings and lookup hints may be relevant to the vulnerability behavior, CWE, affected product, or exposure path. Glexia-inferred context is not an official MITRE, ATT&CK, CWE, or CVE Program mapping.
ATT&CK lookup starting points
Use these exact CWE pages and searches to review the Glexia ATT&CK library from this CVE's weakness and description context.
cve · low confidence lookup
CVE-2026-23306 mapping review
Open the CVE-to-ATT&CK bridge for reviewed, inferred, or future official mappings tied to this CVE.
These fields come from the CVE record and ADP containers, not from Glexia's Take. They preserve time-varying source decisions such as CISA SSVC, KEV status, CVSS metrics, and provider references.
1CVSS vectors
3Timeline events
0ADP providers
7Source links
CVSS vector scores
1 official score
We collect every scored CVSS vector available in the official CNA and ADP containers. When more than one version is present, the table keeps the source vectors side by side instead of collapsing them into the highest score.