CVE-2026-23471
Fecha de publicación:
03/04/2026
*** Pendiente de traducción *** In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
drm: Fix use-after-free on framebuffers and property blobs when calling drm_dev_unplug<br />
<br />
When trying to do a rather aggressive test of igt&#39;s "xe_module_load<br />
--r reload" with a full desktop environment and game running I noticed<br />
a few OOPSes when dereferencing freed pointers, related to<br />
framebuffers and property blobs after the compositor exits.<br />
<br />
Solve this by guarding the freeing in drm_file with drm_dev_enter/exit,<br />
and immediately put the references from struct drm_file objects during<br />
drm_dev_unplug().<br />
<br />
Related warnings for framebuffers on the subtest:<br />
[ 739.713076] ------------[ cut here ]------------<br />
WARN_ON(!list_empty(&dev->mode_config.fb_list))<br />
[ 739.713079] WARNING: drivers/gpu/drm/drm_mode_config.c:584 at drm_mode_config_cleanup+0x30b/0x320 [drm], CPU#12: xe_module_load/13145<br />
....<br />
[ 739.713328] Call Trace:<br />
[ 739.713330] <br />
[ 739.713335] ? intel_pmdemand_destroy_state+0x11/0x20 [xe]<br />
[ 739.713574] ? intel_atomic_global_obj_cleanup+0xe4/0x1a0 [xe]<br />
[ 739.713794] intel_display_driver_remove_noirq+0x51/0xb0 [xe]<br />
[ 739.714041] xe_display_fini_early+0x33/0x50 [xe]<br />
[ 739.714284] devm_action_release+0xf/0x20<br />
[ 739.714294] devres_release_all+0xad/0xf0<br />
[ 739.714301] device_unbind_cleanup+0x12/0xa0<br />
[ 739.714305] device_release_driver_internal+0x1b7/0x210<br />
[ 739.714311] device_driver_detach+0x14/0x20<br />
[ 739.714315] unbind_store+0xa6/0xb0<br />
[ 739.714319] drv_attr_store+0x21/0x30<br />
[ 739.714322] sysfs_kf_write+0x48/0x60<br />
[ 739.714328] kernfs_fop_write_iter+0x16b/0x240<br />
[ 739.714333] vfs_write+0x266/0x520<br />
[ 739.714341] ksys_write+0x72/0xe0<br />
[ 739.714345] __x64_sys_write+0x19/0x20<br />
[ 739.714347] x64_sys_call+0xa15/0xa30<br />
[ 739.714355] do_syscall_64+0xd8/0xab0<br />
[ 739.714361] entry_SYSCALL_64_after_hwframe+0x4b/0x53<br />
<br />
and<br />
<br />
[ 739.714459] ------------[ cut here ]------------<br />
[ 739.714461] xe 0000:67:00.0: [drm] drm_WARN_ON(!list_empty(&fb->filp_head))<br />
[ 739.714464] WARNING: drivers/gpu/drm/drm_framebuffer.c:833 at drm_framebuffer_free+0x6c/0x90 [drm], CPU#12: xe_module_load/13145<br />
[ 739.714715] RIP: 0010:drm_framebuffer_free+0x7a/0x90 [drm]<br />
...<br />
[ 739.714869] Call Trace:<br />
[ 739.714871] <br />
[ 739.714876] drm_mode_config_cleanup+0x26a/0x320 [drm]<br />
[ 739.714998] ? __drm_printfn_seq_file+0x20/0x20 [drm]<br />
[ 739.715115] ? drm_mode_config_cleanup+0x207/0x320 [drm]<br />
[ 739.715235] intel_display_driver_remove_noirq+0x51/0xb0 [xe]<br />
[ 739.715576] xe_display_fini_early+0x33/0x50 [xe]<br />
[ 739.715821] devm_action_release+0xf/0x20<br />
[ 739.715828] devres_release_all+0xad/0xf0<br />
[ 739.715843] device_unbind_cleanup+0x12/0xa0<br />
[ 739.715850] device_release_driver_internal+0x1b7/0x210<br />
[ 739.715856] device_driver_detach+0x14/0x20<br />
[ 739.715860] unbind_store+0xa6/0xb0<br />
[ 739.715865] drv_attr_store+0x21/0x30<br />
[ 739.715868] sysfs_kf_write+0x48/0x60<br />
[ 739.715873] kernfs_fop_write_iter+0x16b/0x240<br />
[ 739.715878] vfs_write+0x266/0x520<br />
[ 739.715886] ksys_write+0x72/0xe0<br />
[ 739.715890] __x64_sys_write+0x19/0x20<br />
[ 739.715893] x64_sys_call+0xa15/0xa30<br />
[ 739.715900] do_syscall_64+0xd8/0xab0<br />
[ 739.715905] entry_SYSCALL_64_after_hwframe+0x4b/0x53<br />
<br />
and then finally file close blows up:<br />
<br />
[ 743.186530] Oops: general protection fault, probably for non-canonical address 0xdead000000000122: 0000 [#1] SMP<br />
[ 743.186535] CPU: 3 UID: 1000 PID: 3453 Comm: kwin_wayland Tainted: G W 7.0.0-rc1-valkyria+ #110 PREEMPT_{RT,(lazy)}<br />
[ 743.186537] Tainted: [W]=WARN<br />
[ 743.186538] Hardware name: Gigabyte Technology Co., Ltd. X299 AORUS Gaming 3/X299 AORUS Gaming 3-CF, BIOS F8n 12/06/2021<br />
[ 743.186539] RIP: 0010:drm_framebuffer_cleanup+0x55/0xc0 [drm]<br />
[ 743.186588] Code: d8 72 73 0f b6 42 05 ff c3 39 c3 72 e8 49 8d bd 50 07 00 00 31 f6 e8 3a 80 d3 e1 49 8b 44 24 10 49 8d 7c 24 08 49 8b 54 24 08 3b 38 0f 85 95 7f 02 00 48 3b 7a 08 0f 85 8b 7f 02 00 48 89 42<br />
[ 743.186589] RSP: 0018:ffffc900085e3cf8 EFLAGS: 00<br />
---truncated---
Gravedad: Pendiente de análisis
Última modificación:
03/04/2026