HIGH
drm/atmel-hlcdc PlaneState UAF
CVE-2026-43236
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
KernelScan AI7.8HIGH
01Description
In the Linux kernel, the following vulnerability has been resolved: drm/atmel-hlcdc: fix use-after-free of drm_crtc_commit after release The atmel_hlcdc_plane_atomic_duplicate_state() callback was copying the atmel_hlcdc_plane state structure without properly duplicating the drm_plane_state. In particular, state->commit remained set to the old state commit, which can lead to a use-after-free in the next drm_atomic_commit() call. Fix this by calling __drm_atomic_helper_duplicate_plane_state(), which correctly clones the base drm_plane_state (including the ->commit pointer). It has been seen when closing and re-opening the device node while another DRM client (e.g. fbdev) is still attached: ============================================================================= BUG kmalloc-64 (Not tainted): Poison overwritten ----------------------------------------------------------------------------- 0xc611b344-0xc611b344 @offset=836. First byte 0x6a instead of 0x6b FIX kmalloc-64: Restoring Poison 0xc611b344-0xc611b344=0x6b Allocated in drm_atomic_helper_setup_commit+0x1e8/0x7bc age=178 cpu=0 pid=29 drm_atomic_helper_setup_commit+0x1e8/0x7bc drm_atomic_helper_commit+0x3c/0x15c drm_atomic_commit+0xc0/0xf4 drm_framebuffer_remove+0x4cc/0x5a8 drm_mode_rmfb_work_fn+0x6c/0x80 process_one_work+0x12c/0x2cc worker_thread+0x2a8/0x400 kthread+0xc0/0xdc ret_from_fork+0x14/0x28 Freed in drm_atomic_helper_commit_hw_done+0x100/0x150 age=8 cpu=0 pid=169 drm_atomic_helper_commit_hw_done+0x100/0x150 drm_atomic_helper_commit_tail+0x64/0x8c commit_tail+0x168/0x18c drm_atomic_helper_commit+0x138/0x15c drm_atomic_commit+0xc0/0xf4 drm_atomic_helper_set_config+0x84/0xb8 drm_mode_setcrtc+0x32c/0x810 drm_ioctl+0x20c/0x488 sys_ioctl+0x14c/0xc20 ret_fast_syscall+0x0/0x54 Slab 0xef8bc360 objects=21 used=16 fp=0xc611b7c0 flags=0x200(workingset|zone=0) Object 0xc611b340 @offset=832 fp=0xc611b7c0
02KernelScan AI Analysis
Risk summary
Local users with graphics device access can trigger a use-after-free vulnerability in the Atmel HLCDC DRM driver when duplicating plane state objects. This can lead to kernel memory corruption and potential privilege escalation when closing and reopening DRM device nodes while other graphics clients remain active.
Vulnerability analysis
The root cause is in atmel_hlcdc_plane_atomic_duplicate_state() which manually copied the plane state structure without properly duplicating the base drm_plane_state, leaving the ->commit pointer referencing a freed drm_crtc_commit object. The fix replaces manual framebuffer reference counting with __drm_atomic_helper_plane_duplicate_state(), which correctly clones all base state including commit pointers. This is locally exploitable through standard DRM ioctls and requires access to the graphics device, typically available to desktop users or processes with graphics permissions.
03Fix Versions
| Branch | Fixed in | Patch commit |
|---|---|---|
| 5.10 | 5.10.252 | fd4a4d0711f4 |
| 5.15 | 5.15.202 | 6404898af86d |
| 6.1 | 6.1.165 | 796e77c14c4c |
| 6.12 | 6.12.75 | a205740a7231 |
| 6.18 | 6.18.16 | 7b4d0fab3ff2 |
| 6.19 | 6.19.6 | 549c6db503db |
| 6.6 | 6.6.128 | ac2d898da509 |
| mainline | 7.0 | bc8477872332 |