{"id":24544,"date":"2026-09-16T20:32:27","date_gmt":"2026-09-16T12:32:27","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-89857"},"modified":"2026-09-16T20:32:27","modified_gmt":"2026-09-16T12:32:27","slug":"cve-2026-89857","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-89857","title":{"rendered":"CVE-2026-89857 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nscsi: qla2xxx: Hold q"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>scsi: qla2xxx: Hold qpair lock when sending NVMe LS reject<\/p>\n<p>qla_nvme_ls_reject_iocb() allocates from and advances the request ring<br \/>\nthrough __qla2x00_alloc_iocbs() (which assumes the hardware_lock is<br \/>\nheld) and qla2x00_start_iocbs() (which advances the ring and rings the<br \/>\nrequest-in doorbell), but takes no lock itself. Two of its callers<br \/>\ninvoke it without the producer lock held:<\/p>\n<p> &#8211; qla_nvme_xmt_ls_rsp(), the NVMe-FC .xmt_ls_rsp transport callback, on<br \/>\n   its error path, and<\/p>\n<p> &#8211; qla2xxx_process_purls_pkt(), run from the purex work\/DPC context.<\/p>\n<p>Both use ha-&gt;base_qpair, whose qp_lock_ptr is hardware_lock, so they can<br \/>\nrun concurrently with normal I\/O submission on the base ring and corrupt<br \/>\nthe ring producer state, leading to duplicated or dropped commands. The<br \/>\nthird caller, qla2xxx_process_purls_iocb(), runs inside<br \/>\nqla24xx_process_response_queue() with the qpair lock already held and is<br \/>\nsafe; that is also why the lock cannot be taken inside the helper itself<br \/>\n(it would recursively re-acquire hardware_lock on the response path).<\/p>\n<p>Take qp_lock_ptr around the two unlocked callers and document the helper<br \/>\nas caller-locked. Both run in process context, so spin_lock_irqsave() is<br \/>\nused and nothing in the locked region sleeps.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>scsi: qla2xxx: Hold qpair lock when sending NVMe LS reject<\/p>\n<p>qla_nvme_ls_reject_iocb() allocates from and advances the request ring<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-24544","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/24544","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln"}],"about":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/types\/vuln"}],"wp:attachment":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=24544"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=24544"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=24544"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}