scsi: qla2xxx: Null out freed pointers in qla2x00_mem_alloc() error path
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Fix
- Fixed in 4.15, 4.16, 6.6.160, 6.12.112, 6.18.53, and 1 more
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
Summary
In the Linux kernel, the following vulnerability has been resolved: scsi: qla2xxx: Null out freed pointers in qla2x00_mem_alloc() error path When qla2x00_mem_alloc() fails, qla2x00_probe_one() jumps to probe_hw_failed and calls qla2x00_mem_free(). Several error labels in qla2x00_mem_alloc() freed adapter members (elsrej.c, purex_dma_pool, flt, sfp_data, loop_id_map, async_pd, sf_init_cb, ex_init_cb, npiv_info) but left the pointers dangling. qla2x00_mem_free() then freed them a second time. Worse, for the dma_pool members it issued dma_pool_free(ha->s_dma_pool, ...) after s_dma_pool had already been destroyed and set to NULL at fail_s_dma_pool, dereferencing a NULL pool. Clear each freed pointer (and its DMA handle) in the error labels so the subsequent qla2x00_mem_free() skips them.
Timeline
- CVE published
- Record last updated
Affected versions
- Linux Linux
From d64d6c5671db5e693a0caaee79f2571b098749c9 · fixed in 5e0d6ffabbbd86b3fb9168b9dbb62190ecb20d84; From d64d6c5671db5e693a0caaee79f2571b098749c9 · fixed in 84f5de696b8c924aeb4bf430a0bdc762fc50e99f; From d64d6c5671db5e693a0caaee79f2571b098749c9 · fixed in a57570229edb7a0990d5c8067daeb9ac8858a961; From d64d6c5671db5e693a0caaee79f2571b098749c9 · fixed in 286d9594a022dd7e0caa3de9daa63b896bc70d43; From d64d6c5671db5e693a0caaee79f2571b098749c9 · fixed in 6d90f0feb929f6c0f3010f9af4747c7230b75993; From 4.14.27 · fixed in 4.15; From 4.15.10 · fixed in 4.16
- Linux Linux
4.16
- KernelLinux
From 4.16.0 · fixed in 6.6.160; From 6.7.0 · fixed in 6.12.112; From 6.13.0 · fixed in 6.18.53; From 6.19.0 · fixed in 7.2.7