High · published March 6, 2025
In the Linux kernel, the following vulnerability has been resolved:
block: don't revert iter for -EIOCBQUEUED
blkdev_read_iter() has a few odd checks, like gating the position and
count adjustment on whether or not the result is bigger-than-or-equal to
zero (where bigger than makes more sense), and not checking the return
value of blkdev_direct_IO() before doing an iov_iter_revert(). The
latter can lead to attempting to revert with a negative value, which
when passed to iov_iter_revert() as an unsigned value will lead to
throwing a WARN_ON() because unroll is bigger than MAX_RW_COUNT.
Be sane and don't revert for -EIOCBQUEUED, like what is done in other
spots.
| Product | Versions | Fixed in |
|---|---|---|
| linux/linux_kernel | ≥ 5.17.1, < 6.1.129 | 6.1.129 |
| linux/linux_kernel | ≥ 6.2, < 6.6.78 | 6.6.78 |
| linux/linux_kernel | ≥ 6.7, < 6.12.14 | 6.12.14 |
| linux/linux_kernel | ≥ 6.13, < 6.13.3 | 6.13.3 |
| linux/linux_kernel | all versions | — |
| linux/linux_kernel | all versions | — |
| linux/linux_kernel | all versions | — |
| linux/linux_kernel | all versions | — |
| linux/linux_kernel | all versions | — |
| linux/linux_kernel | all versions | — |
| linux/linux_kernel | all versions | — |