Description
In the Linux kernel, the following vulnerability has been resolved: scsi: qla2xxx: Serialize NVMe unsol ctx list with a per-fcport lock The fcport->unsol_ctx_head list is modified from several contexts without a common lock. Entries are added in qla2xxx_process_purls_iocb() from the response queue ISR (under the qpair qp_lock), while they are removed from qla2xxx_process_purls_pkt() (DPC/purex worker), qla_nvme_xmt_ls_rsp() (NVMe-FC transport callback) and qla_nvme_release_lsrsp_cmd_kref() (SRB completion). The qpair qp_lock cannot serialize this per-fcport list since multiqueue adapters add entries through different qpairs, so a concurrent add and delete (or two concurrent deletes) can corrupt the list pointers. Introduce a dedicated per-fcport spinlock, unsol_ctx_lock, initialized in qla2x00_alloc_fcport(), and take it around every list_add_tail()/list_del() on unsol_ctx_head. The add nests under the existing qp_lock; no delete path takes qp_lock, so the lock order is consistent and deadlock free.
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Linux Linux
Default version status: unaffected
875386b98857822b77ac7f95bdf367b70af5b78c to < 6c71726cdfda93ae169a75c7b1697eb870303125affected875386b98857822b77ac7f95bdf367b70af5b78c to < c1ee12eecbab9674fb73c9e00a93fac655d5a5dcaffected875386b98857822b77ac7f95bdf367b70af5b78c to < b211d138cad86f749826d6132db6388eded992d8affected875386b98857822b77ac7f95bdf367b70af5b78c to < 4d8ad6bc8cc5eff1870cef00a0d611f38f8b6bd0affected875386b98857822b77ac7f95bdf367b70af5b78c to < 76da0c43c63eb0496649e372ac64466364d0fe7daffected
Linux Linux
Default version status: affected
6.6affected0 to < 6.6unaffected6.6.160 to ≤ 6.6.*unaffected6.12.112 to ≤ 6.12.*unaffected6.18.53 to ≤ 6.18.*unaffected7.2.7 to ≤ 7.2.*unaffected7.3 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/6c71726cdfda93ae169a75c7b1697eb870303125 ↗
- https://git.kernel.org/stable/c/c1ee12eecbab9674fb73c9e00a93fac655d5a5dc ↗
- https://git.kernel.org/stable/c/b211d138cad86f749826d6132db6388eded992d8 ↗
- https://git.kernel.org/stable/c/4d8ad6bc8cc5eff1870cef00a0d611f38f8b6bd0 ↗
- https://git.kernel.org/stable/c/76da0c43c63eb0496649e372ac64466364d0fe7d ↗