7.3
/ 10
HIGH
CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:H
Description
In the Linux kernel, the following vulnerability has been resolved:
fbdev: udlfb: add vm_ops to dlfb_ops_mmap to prevent use-after-free
dlfb_ops_mmap() uses remap_pfn_range() to map vmalloc framebuffer pages
to userspace but sets no vm_ops on the VMA. This means the kernel cannot
track active mmaps. When dlfb_realloc_framebuffer() replaces the backing
buffer via FBIOPUT_VSCREENINFO, existing mmap PTEs are not invalidated.
On USB disconnect, dlfb_ops_destroy() calls vfree() on the old pages
while userspace PTEs still reference them, resulting in a use-after-free:
the process retains read/write access to freed kernel pages.
Add vm_operations_struct with open/close callbacks that maintain an
atomic mmap_count on struct dlfb_data. In dlfb_realloc_framebuffer(),
check mmap_count and return -EBUSY if the buffer is currently mapped,
preventing buffer replacement while userspace holds stale PTEs.
Tested with PoC using dummy_hcd + raw_gadget USB device emulation.
fbdev: udlfb: add vm_ops to dlfb_ops_mmap to prevent use-after-free
dlfb_ops_mmap() uses remap_pfn_range() to map vmalloc framebuffer pages
to userspace but sets no vm_ops on the VMA. This means the kernel cannot
track active mmaps. When dlfb_realloc_framebuffer() replaces the backing
buffer via FBIOPUT_VSCREENINFO, existing mmap PTEs are not invalidated.
On USB disconnect, dlfb_ops_destroy() calls vfree() on the old pages
while userspace PTEs still reference them, resulting in a use-after-free:
the process retains read/write access to freed kernel pages.
Add vm_operations_struct with open/close callbacks that maintain an
atomic mmap_count on struct dlfb_data. In dlfb_realloc_framebuffer(),
check mmap_count and return -EBUSY if the buffer is currently mapped,
preventing buffer replacement while userspace holds stale PTEs.
Tested with PoC using dummy_hcd + raw_gadget USB device emulation.
Basic Information
ID
CVE-2026-43497
Source
Linux
Published
May 21, 2026 at 12:12
Modified
May 30, 2026 at 10:45
Affected Product
Vendor
Linux
Product
Linux
Version
7433914efd584b22bb49d3e1eee001f5d0525ecd
Affected Versions
Linux Linux 7433914efd584b22bb49d3e1eee001f5d0525ecd
Linux Linux 7433914efd584b22bb49d3e1eee001f5d0525ecd
Linux Linux 7433914efd584b22bb49d3e1eee001f5d0525ecd
Linux Linux 7433914efd584b22bb49d3e1eee001f5d0525ecd
Linux Linux 7433914efd584b22bb49d3e1eee001f5d0525ecd
Linux Linux 4.19
Linux Linux 7433914efd584b22bb49d3e1eee001f5d0525ecd
Linux Linux 7433914efd584b22bb49d3e1eee001f5d0525ecd
Linux Linux 7433914efd584b22bb49d3e1eee001f5d0525ecd
Linux Linux 7433914efd584b22bb49d3e1eee001f5d0525ecd
Linux Linux 4.19
References
- git.kernel.org /stable/c/4f312c30f0368e8d2a76aa650dff73f23490b5e7
- git.kernel.org /stable/c/18dd358de72d57993422cbb5dfb29ccd74efe192
- git.kernel.org /stable/c/da9b065cedfd3b574f229d5be594e6aa47a27ae6
- git.kernel.org /stable/c/a2c53a3822ee26e8d758071815b9ed3bf6669fc1
- git.kernel.org /stable/c/8de779dc40d35d39fa07387b6f921eb11df0f511