KernelScan.io

HIGH Introduced in 6.5

fbdev IORead OOB

CVE-2026-80578

CVSS 7.3 / 10.0 NVD

CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:H

KernelScan AI7.0HIGH

01

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.

02

Engine v0.6.0

Risk summary

A local user with access to the framebuffer device can trigger an out-of-bounds read by causing a partial copy-to-user failure during I/O operations. This desynchronizes the read pointer, leading to unbounded hardware reads that can crash the system or leak sensitive memory. The vulnerability requires local access and specific conditions to exploit but poses a significant risk to system stability and confidentiality.

Affecteddrivers/video/fbdev/core/fb_io_fops.c (fbdev)

Vulnerability analysis

When reading from the framebuffer device, if the transfer to user memory only completes partially (for example because the destination buffer is faulty), the loop continues iterating. The hardware read position has already moved forward by the full intended amount, but the remaining length is only reduced by what was actually transferred. This mismatch causes later reads to start from an incorrect offset and continue past the intended boundary, resulting in out-of-bounds hardware reads. The fix stops the operation immediately when a partial transfer occurs, returning the successfully read amount and preventing any further mismatched hardware accesses. This vulnerability is reachable locally by any user who can open and read from the framebuffer device, which typically requires being in the video group or having equivalent local privileges.

03

BranchIntroducedFixed inPatch commit
6.66.56.6.15342bc07b4e5a3
6.126.56.12.10542a6d8126c19
7.16.57.1.107110b7b794a2
6.186.56.18.467ff87a01ae3a
mainline6.57.281cc73be40c6
cip/6.126.56.12.108-cip3142a6d8126c19