Description
In the Linux kernel, the following vulnerability has been resolved: xfs: fix cursor and pointer handling when recovering iunlink buckets LOLLM pointed out a bug in xlog_recover_iunlink_bucket: 1. We don't null out prev_ip after releasing it, which can lead to UAF problems if the inodegc flush call in the loop fails. at which point I noticed even more bugs: 2. If the inodegc flush inside the loop fails, we also leak @ip. 3. We set prev_agino to agino having already advanced agino, which results in inodes with i_prev_unlinked set to itself. 4. If we exit the bottom of the loop with prev_ip set, then prev_ip aliases ip and we also set its i_prev_unlinked to itself. Bugs 3 and 4 introduce loops into the unlinked list, though these loops don't surface because we immediately flush each unlinked inode after loading it. Fix all of these issues.
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
04755d2e5821b3afbaadd09fe5df58d04de36484 to < 47a948ba653a463d429e02fda2f06a3d6b78666daffected04755d2e5821b3afbaadd09fe5df58d04de36484 to < 8c9d5b8a96d6b93eb24e07b4163c89341ba29bd1affected04755d2e5821b3afbaadd09fe5df58d04de36484 to < 66a2179d02668f8df44b1a249899006f3ba38ea0affected04755d2e5821b3afbaadd09fe5df58d04de36484 to < 961c717e6bf0e53c2c2b1fe4aef1add9390fedabaffected04755d2e5821b3afbaadd09fe5df58d04de36484 to < 65f39d09d73718611cee40399179323b5d4ead00affected
Linux Linux
Default version status: affected
6.0affected0 to < 6.0unaffected6.6.160 to ≤ 6.6.*unaffected6.12.113 to ≤ 6.12.*unaffected6.18.55 to ≤ 6.18.*unaffected7.2.9 to ≤ 7.2.*unaffected7.3 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/47a948ba653a463d429e02fda2f06a3d6b78666d ↗
- https://git.kernel.org/stable/c/8c9d5b8a96d6b93eb24e07b4163c89341ba29bd1 ↗
- https://git.kernel.org/stable/c/66a2179d02668f8df44b1a249899006f3ba38ea0 ↗
- https://git.kernel.org/stable/c/961c717e6bf0e53c2c2b1fe4aef1add9390fedab ↗
- https://git.kernel.org/stable/c/65f39d09d73718611cee40399179323b5d4ead00 ↗