Логотип exploitDog
Консоль
Логотип exploitDog

exploitDog

redhat логотип

CVE-2026-97528

Опубликовано: 25 сент. 2026
Источник: redhat
CVSS3: 7.8
EPSS Низкий

Описание

In the Linux kernel, the following vulnerability has been resolved: scsi: qla2xxx: Unlink NVMe unsol ctx before freeing on LS reject error qla_nvme_xmt_ls_rsp() obtains uctx, which was linked into fcport->unsol_ctx_head by qla2xxx_process_purls_iocb() and is still linked when the NVMe transport calls back to transmit the LS response. On the error (out:) path the function frees uctx with kfree() but never removes it from the list. This leaves a freed node in fcport->unsol_ctx_head: the next list_add_tail() for that fcport writes through the freed node, and a subsequent list_del() can corrupt the list or panic. Unlink uctx with list_del() before kfree() on the error path, matching the other free sites in qla_nvme_release_lsrsp_cmd_kref() and qla2xxx_process_purls_pkt(). qla2x00_rel_sp() in the failure path only returns the SRB to its pool and does not invoke sp->put_fn, so the out: path is the sole free and uctx is always still linked there.

A flaw was found in the Linux kernel's qla2xxx driver. This vulnerability allows an attacker on the storage network to cause a Denial of Service (DoS) or memory corruption. When an error occurs during the handling of Non-Volatile Memory Express (NVMe) Link Service responses, the driver releases an internal context structure without unlinking it from an active tracking list. Subsequent list operations access or modify this freed memory, potentially resulting in a system crash.

Отчет

This vulnerability is rated as an Important severity flaw because kernel memory corruption can be triggered during storage transport failures, directly destabilizing the operating system. Exposure is restricted to deployments equipped with QLogic Fibre Channel Host Bus Adapters (HBAs) configured for NVMe over Fibre Channel (NVMe-oFC). Hosts without this specific hardware or those not utilizing NVMe over fabrics protocols do not execute the susceptible driver logic.

Меры по смягчению последствий

Prevent the qla2xxx kernel module from loading if QLogic Fibre Channel Host Bus Adapters (HBAs) or NVMe over Fibre Channel are not required on the system:

  1. Blacklist the module by creating a configuration file:

echo "blacklist qla2xxx" >> /etc/modprobe.d/blacklist-qla2xxx.conf

  1. Prevent the module from loading through other dependencies or auto-loading:

echo "install qla2xxx /bin/true" >> /etc/modprobe.d/blacklist-qla2xxx.conf

Caveat: Disabling this module prevents the system from using QLogic Fibre Channel adapters and attached storage. If the module is currently loaded into memory, a system restart is required for the configuration changes to take effect.

Затронутые пакеты

ПлатформаПакетСостояниеРекомендацияРелиз
Red Hat Enterprise Linux 10kernelAffected
Red Hat Enterprise Linux 6kernelNot affected
Red Hat Enterprise Linux 7kernelNot affected
Red Hat Enterprise Linux 7kernel-rtNot affected
Red Hat Enterprise Linux 8kernelAffected
Red Hat Enterprise Linux 8kernel-rtAffected
Red Hat Enterprise Linux 9kernelAffected
Red Hat Enterprise Linux 9kernel-rtNot affected

Показывать по

Дополнительная информация

Статус:

Important
Дефект:
CWE-825
https://bugzilla.redhat.com/show_bug.cgi?id=2541010kernel: scsi: qla2xxx: Unlink NVMe unsol ctx before freeing on LS reject error

EPSS

Процентиль: 28%
0.00344
Низкий

7.8 High

CVSS3

Связанные уязвимости

CVSS3: 8.8
ubuntu
около 1 месяца назад

In the Linux kernel, the following vulnerability has been resolved: scsi: qla2xxx: Unlink NVMe unsol ctx before freeing on LS reject error qla_nvme_xmt_ls_rsp() obtains uctx, which was linked into fcport->unsol_ctx_head by qla2xxx_process_purls_iocb() and is still linked when the NVMe transport calls back to transmit the LS response. On the error (out:) path the function frees uctx with kfree() but never removes it from the list. This leaves a freed node in fcport->unsol_ctx_head: the next list_add_tail() for that fcport writes through the freed node, and a subsequent list_del() can corrupt the list or panic. Unlink uctx with list_del() before kfree() on the error path, matching the other free sites in qla_nvme_release_lsrsp_cmd_kref() and qla2xxx_process_purls_pkt(). qla2x00_rel_sp() in the failure path only returns the SRB to its pool and does not invoke sp->put_fn, so the out: path is the sole free and uctx is always still linked there.

CVSS3: 8.8
nvd
около 1 месяца назад

In the Linux kernel, the following vulnerability has been resolved: scsi: qla2xxx: Unlink NVMe unsol ctx before freeing on LS reject error qla_nvme_xmt_ls_rsp() obtains uctx, which was linked into fcport->unsol_ctx_head by qla2xxx_process_purls_iocb() and is still linked when the NVMe transport calls back to transmit the LS response. On the error (out:) path the function frees uctx with kfree() but never removes it from the list. This leaves a freed node in fcport->unsol_ctx_head: the next list_add_tail() for that fcport writes through the freed node, and a subsequent list_del() can corrupt the list or panic. Unlink uctx with list_del() before kfree() on the error path, matching the other free sites in qla_nvme_release_lsrsp_cmd_kref() and qla2xxx_process_purls_pkt(). qla2x00_rel_sp() in the failure path only returns the SRB to its pool and does not invoke sp->put_fn, so the out: path is the sole free and uctx is always still linked there.

CVSS3: 8.8
msrc
около 1 месяца назад

scsi: qla2xxx: Unlink NVMe unsol ctx before freeing on LS reject error

CVSS3: 8.8
debian
около 1 месяца назад

In the Linux kernel, the following vulnerability has been resolved: s ...

CVSS3: 8.8
github
около 1 месяца назад

In the Linux kernel, the following vulnerability has been resolved: scsi: qla2xxx: Unlink NVMe unsol ctx before freeing on LS reject error qla_nvme_xmt_ls_rsp() obtains uctx, which was linked into fcport->unsol_ctx_head by qla2xxx_process_purls_iocb() and is still linked when the NVMe transport calls back to transmit the LS response. On the error (out:) path the function frees uctx with kfree() but never removes it from the list. This leaves a freed node in fcport->unsol_ctx_head: the next list_add_tail() for that fcport writes through the freed node, and a subsequent list_del() can corrupt the list or panic. Unlink uctx with list_del() before kfree() on the error path, matching the other free sites in qla_nvme_release_lsrsp_cmd_kref() and qla2xxx_process_purls_pkt(). qla2x00_rel_sp() in the failure path only returns the SRB to its pool and does not invoke sp->put_fn, so the out: path is the sole free and uctx is always still linked there.

EPSS

Процентиль: 28%
0.00344
Низкий

7.8 High

CVSS3