VYPR
High severity7.8NVD Advisory· Published Mar 25, 2026· Updated Apr 2, 2026

CVE-2026-23306

CVE-2026-23306

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.

AI Insight

LLM-synthesized narrative grounded in this CVE's description and references.

A use-after-free in the Linux kernel's pm8001 SCSI driver occurs when pm8001_queue_command() returns -ENODEV after freeing a SAS task, leading to a double free by libsas.

Root

Cause

CVE-2026-23306 is a use-after-free vulnerability in the Linux kernel's pm8001 SCSI driver. The bug was introduced by commit e29c47fe8946, which refactored pm8001_queue_command(). In the new code path, when the PHY is down or the device is gone, the function updates the task status, calls task_done (which frees the underlying SAS task), and then returns -ENODEV to the caller. The caller, sas_ata_qc_issue() in libsas, interprets the non-zero return value as an indication that the task was not handled and proceeds to clean up and free the task again, resulting in a double free.

Exploitation

An attacker with local access and the ability to trigger a PHY-down or device-gone condition on a system using the pm8001 driver could cause the driver to enter this vulnerable code path. No special privileges beyond the ability to issue SCSI commands are required; the vulnerability is triggered during normal error handling in the SCSI layer. The double free occurs in kernel memory, which can lead to memory corruption.

Impact

Successful exploitation could allow an attacker to corrupt kernel memory, potentially leading to a denial of service (system crash) or, in more sophisticated scenarios, arbitrary code execution with kernel privileges. The CVSS v3 score of 7.8 (High) reflects the potential for high impact on confidentiality, integrity, and availability.

Mitigation

The fix has been applied to the Linux kernel stable tree. The following commits address the issue: [1], [2], [3], [4]. Users should update their kernel to a version containing these patches. No workaround is available; updating the kernel is the recommended mitigation.

AI Insight generated on May 18, 2026. Synthesized from this CVE's description and the cited reference URLs; citations are validated against the source bundle.

Affected products

1

Patches

0

No patches discovered yet.

Vulnerability mechanics

AI mechanics synthesis has not run for this CVE yet.

References

6

News mentions

0

No linked articles in our index yet.