Description
In the Linux kernel, the following vulnerability has been resolved: scsi: pm8001: Fix use-after-free in pm8001_queue_command() Commit e29c47fe8946 ("scsi: pm8001: Simplify pm8001_task_exec()") refactors pm8001_queue_command(), however it introduces a potential cause of a double free scenario when it changes the function to return -ENODEV in case of phy down/device gone state. In this path, pm8001_queue_command() updates task status and calls task_done to indicate to upper layer that the task has been handled. However, this also frees the underlying SAS task. A -ENODEV is then returned to the caller. When libsas sas_ata_qc_issue() receives this error value, it assumes the task wasn't handled/queued by LLDD and proceeds to clean up and free the task again, resulting in a double free. Since pm8001_queue_command() handles the SAS task in this case, it should return 0 to the caller indicating that the task has been handled.
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
e29c47fe8946cc732b0e0d393b65b13c84bb69d0 to < ebbb852ffbc952b95ddb7e3872b67b3e74c6da47affectede29c47fe8946cc732b0e0d393b65b13c84bb69d0 to < 8b00427317ba7b7ec91252b034009f638d0f311baffectede29c47fe8946cc732b0e0d393b65b13c84bb69d0 to < c5dc39f8ae055520fd778b7fb0423f11586f15c4affectede29c47fe8946cc732b0e0d393b65b13c84bb69d0 to < 824a7672e3540962d5c77d4c6666254d7aa6f0b3affectede29c47fe8946cc732b0e0d393b65b13c84bb69d0 to < 227ff4af00abc40b95123cc27ee8079069dcd8d7affectede29c47fe8946cc732b0e0d393b65b13c84bb69d0 to < 38353c26db28efd984f51d426eac2396d299cca7affected
Linux Linux
Default version status: affected
5.18affected0 to < 5.18unaffected6.1.167 to ≤ 6.1.*unaffected6.6.130 to ≤ 6.6.*unaffected6.12.77 to ≤ 6.12.*unaffected6.18.17 to ≤ 6.18.*unaffected6.19.7 to ≤ 6.19.*unaffected7.0 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/ebbb852ffbc952b95ddb7e3872b67b3e74c6da47 ↗
- https://git.kernel.org/stable/c/8b00427317ba7b7ec91252b034009f638d0f311b ↗
- https://git.kernel.org/stable/c/c5dc39f8ae055520fd778b7fb0423f11586f15c4 ↗
- https://git.kernel.org/stable/c/824a7672e3540962d5c77d4c6666254d7aa6f0b3 ↗
- https://git.kernel.org/stable/c/227ff4af00abc40b95123cc27ee8079069dcd8d7 ↗
- https://git.kernel.org/stable/c/38353c26db28efd984f51d426eac2396d299cca7 ↗