Description
In the Linux kernel, the following vulnerability has been resolved: fbdev: core: Fix pointer desynchronization in fb_io_read() In fb_io_read(), if copy_to_user() performs a partial copy (e.g., due to a faulty user buffer), the loop adjusts the chunk size 'c' and updates the remaining 'count'. However, the hardware 'src' pointer has already been eagerly advanced by the original chunk size. If the loop is allowed to continue, the read will resume from an incorrect, over-advanced offset. Since the remaining 'count' was only decremented by the successful bytes, this desynchronization causes the next iterations to execute more hardware reads than originally bounded, eventually leading to out-of-bounds I/O reads. Fix this by breaking out of the loop immediately upon a partial copy_to_user(). A partial copy indicates a faulty user buffer, making subsequent read attempts futile. Breaking out ensures we return the number of successfully read bytes without risking out-of-bounds hardware accesses in subsequent mismatched iterations.
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
6121cd9ef911432b14c2a17aefaf8cd2f3cfcdff to < 42bc07b4e5a3c8a02a433388f562a8f46d093e11affected6121cd9ef911432b14c2a17aefaf8cd2f3cfcdff to < 42a6d8126c194133eafab2b0fd5c8668ebfcba5baffected6121cd9ef911432b14c2a17aefaf8cd2f3cfcdff to < 7ff87a01ae3a8cd0208f7499386998223a8b5dbaaffected6121cd9ef911432b14c2a17aefaf8cd2f3cfcdff to < 7110b7b794a2aac2c5cf8eb06ebf2af724c74d50affected6121cd9ef911432b14c2a17aefaf8cd2f3cfcdff to < 81cc73be40c6f028f1ee3f438ace46afe666dbaeaffected
Linux Linux
Default version status: affected
6.5affected0 to < 6.5unaffected6.6.153 to ≤ 6.6.*unaffected6.12.105 to ≤ 6.12.*unaffected6.18.46 to ≤ 6.18.*unaffected7.1.10 to ≤ 7.1.*unaffected7.2 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/42bc07b4e5a3c8a02a433388f562a8f46d093e11 ↗
- https://git.kernel.org/stable/c/42a6d8126c194133eafab2b0fd5c8668ebfcba5b ↗
- https://git.kernel.org/stable/c/7ff87a01ae3a8cd0208f7499386998223a8b5dba ↗
- https://git.kernel.org/stable/c/7110b7b794a2aac2c5cf8eb06ebf2af724c74d50 ↗
- https://git.kernel.org/stable/c/81cc73be40c6f028f1ee3f438ace46afe666dbae ↗