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

scsi: qla2xxx: Fix use-after-free of qpair work on queue teardown

The response queue MSI-X handler qla2xxx_msix_rsp_q() schedules
qla_do_work() via queue_work(ha->wq, &qpair->q_work). qla_do_work()
dereferences the qpair (vha, rsp) and takes qpair->qp_lock.

During teardown, qla2xxx_delete_qpair() deletes the response queue, which
calls free_irq() in qla25xx_free_rsp_que(), and then frees the queue and
the qpair. free_irq() waits for running hardirq handlers but does not
cancel work already placed on ha->wq. A still-pending q_work then runs
qla_do_work() against the freed qpair and response queue, causing a
use-after-free. This is especially likely during full adapter teardown,
where destroy_workqueue(ha->wq) forces pending work to run after the queue
pairs have been freed.

Flush the work item with cancel_work_sync() in qla25xx_free_rsp_que()
after free_irq() has released the interrupt (so no new work can be
queued) and before the response queue and qpair memory are freed (so the
flushed handler still sees valid memory). Guard on rsp->qpair and ha->wq
to match the INIT_WORK() condition and avoid operating on an
uninitialized work_struct.
Published: 2026-09-25
Score: 7.5 High
EPSS: n/a
KEV: No
Impact: Arbitrary kernel code execution via a use‑after‑free in the SCSI qla2xxx driver
Action: Immediate Patch
AI Analysis

Impact

During adapter teardown the queue work handler schedules a work function that later dereferences a freed qpair structure, leading to a use‑after‑free condition. If an attacker can influence the data stored in the freed memory, the kernel could execute unintended code, potentially yielding local privilege escalation or arbitrary code execution. Even without direct control, the corruption may crash the system, causing a denial of service.

Affected Systems

The vulnerability applies to Linux kernel implementations that include the qla2xxx SCSI driver prior to the patch commit referenced in the advisory. No specific kernel versions are listed, so any kernel containing the unpatched driver is potentially affected.

Risk and Exploitability

The CVSS score is 7.5, indicating high severity. The EPSS score is unavailable and the vulnerability is not catalogued in the CISA KEV list. Exploitation would likely require local or privileged access to the affected system and sufficient ability to influence the freed memory, limiting the attack surface to local or compromised‑administrator contexts. Consequently, the risk is moderate to high, especially for systems that rely on the qla2xxx driver for SCSI networking.

Generated by OpenCVE AI on September 25, 2026 at 23:32 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade the Linux kernel to a version that includes the patch with cancel_work_sync to prevent work execution on freed resources
  • If an upgrade is not immediately possible, ensure that any custom deployment of the qla2xxx driver performs workqueue flushes before tearing down the adapter as a defensive measure
  • Monitor system stability and logs for signs of kernel panics or sporadic crashes that may indicate lingering use‑after‑free conditions

Generated by OpenCVE AI on September 25, 2026 at 23:32 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Sat, 26 Sep 2026 00:00:00 +0000

Type Values Removed Values Added
Weaknesses CWE-416

Fri, 25 Sep 2026 15:00:00 +0000

Type Values Removed Values Added
Metrics cvssV3_1

{'score': 7.5, 'vector': 'CVSS:3.1/AV:A/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H'}


Fri, 25 Sep 2026 10:30:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: scsi: qla2xxx: Fix use-after-free of qpair work on queue teardown The response queue MSI-X handler qla2xxx_msix_rsp_q() schedules qla_do_work() via queue_work(ha->wq, &qpair->q_work). qla_do_work() dereferences the qpair (vha, rsp) and takes qpair->qp_lock. During teardown, qla2xxx_delete_qpair() deletes the response queue, which calls free_irq() in qla25xx_free_rsp_que(), and then frees the queue and the qpair. free_irq() waits for running hardirq handlers but does not cancel work already placed on ha->wq. A still-pending q_work then runs qla_do_work() against the freed qpair and response queue, causing a use-after-free. This is especially likely during full adapter teardown, where destroy_workqueue(ha->wq) forces pending work to run after the queue pairs have been freed. Flush the work item with cancel_work_sync() in qla25xx_free_rsp_que() after free_irq() has released the interrupt (so no new work can be queued) and before the response queue and qpair memory are freed (so the flushed handler still sees valid memory). Guard on rsp->qpair and ha->wq to match the INIT_WORK() condition and avoid operating on an uninitialized work_struct.
Title scsi: qla2xxx: Fix use-after-free of qpair work on queue teardown
First Time appeared Linux
Linux linux Kernel
CPEs cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Vendors & Products Linux
Linux linux Kernel
References

Subscriptions

Linux Linux Kernel
cve-icon MITRE

Status: PUBLISHED

Assigner: Linux

Published:

Updated: 2026-09-25T14:41:10.781Z

Reserved: 2026-09-24T16:01:01.153Z

Link: CVE-2026-97536

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-09-25T11:17:03.863

Modified: 2026-09-25T15:17:58.427

Link: CVE-2026-97536

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-09-25T23:45:18Z

Weaknesses