CVE-2026-23306
Received Received - Intake
Use-After-Free Vulnerability in Linux pm8001 SCSI Driver

Publication date: 2026-03-25

Last updated on: 2026-04-02

Assigner: kernel.org

Description
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.
CVSS Scores
EPSS Scores
Probability:
Percentile:
Meta Information
Published
2026-03-25
Last Modified
2026-04-02
Generated
2026-05-07
AI Q&A
2026-03-25
EPSS Evaluated
2026-05-05
NVD
EUVD
Affected Vendors & Products
Showing 1 associated CPE
Vendor Product Version / Range
linux linux_kernel *
Helpful Resources
Exploitability
CWE
CWE Icon
KEV
KEV Icon
CWE ID Description
CWE-UNKNOWN
Attack-Flow Graph
AI Powered Q&A
Can you explain this vulnerability to me?

This vulnerability is a use-after-free issue in the Linux kernel's pm8001 SCSI driver, specifically in the function pm8001_queue_command().

A recent code refactor changed pm8001_queue_command() to return an error (-ENODEV) when the physical device is down or gone. In this error path, the function updates the task status and calls task_done(), which frees the underlying SAS task.

However, the caller (libsas sas_ata_qc_issue()) interprets the -ENODEV return as the task not being handled and attempts to free the task again, causing a double free scenario.

The fix involves pm8001_queue_command() returning 0 instead of -ENODEV in this case to indicate the task has been handled and prevent the double free.


How can this vulnerability impact me? :

This vulnerability can lead to a double free condition in the Linux kernel's SCSI driver, which may cause system instability or crashes.

Exploitation of this issue could potentially allow an attacker to cause a denial of service by crashing the kernel or corrupting kernel memory.

Such memory corruption issues might also be leveraged for privilege escalation or arbitrary code execution, although this specific impact is not detailed in the provided information.


Ask Our AI Assistant
Need more information? Ask your question to get an AI reply (Powered by our expertise)
0/70
EPSS Chart