{"id":5405,"date":"2026-09-04T18:47:48","date_gmt":"2026-09-04T10:47:48","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-68266"},"modified":"2026-09-04T18:47:48","modified_gmt":"2026-09-04T10:47:48","slug":"cve-2026-68266","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-68266","title":{"rendered":"CVE-2026-68266 [HIGH] &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\ndrm\/xe: Hold a dma-bu"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>drm\/xe: Hold a dma-buf reference for imported BOs<\/p>\n<p>An imported dma-buf BO is created as a ttm_bo_type_sg BO whose<br \/>\nreservation object is the exporter&#8217;s dma_buf-&gt;resv. The importer,<br \/>\nhowever, only takes a dma-buf reference after a successful<br \/>\ndma_buf_dynamic_attach(). Until then nothing keeps the exporter alive,<br \/>\nso if the exporter is freed while the BO still references its resv, a<br \/>\nlater access to that resv is a use-after-free:<\/p>\n<p>  Oops: general protection fault, probably for non-canonical address<br \/>\n        0x6b6b6b6b6b6b6b9c<br \/>\n  Workqueue: ttm ttm_bo_delayed_delete [ttm]<br \/>\n  RIP: 0010:mutex_can_spin_on_owner+0x3f\/0xc0<\/p>\n<p>This can be reached on two paths:<\/p>\n<p> &#8211; dma_buf_dynamic_attach() fails, or<br \/>\n &#8211; ttm_bo_init_reserved() fails during BO creation.<\/p>\n<p>In both cases the BO already has bo-&gt;base.resv pointing at the exporter<br \/>\nresv, and sg BOs are always torn down via ttm_bo_delayed_delete(), which<br \/>\nlocks bo-&gt;base.resv asynchronously &#8211; potentially after the exporter has<br \/>\nbeen freed.<\/p>\n<p>Take the dma-buf reference in xe_bo_init_locked(), before<br \/>\nttm_bo_init_reserved(), so it also covers a creation failure there, and<br \/>\nrelease it in xe_ttm_bo_destroy(). The reference is held for the whole<br \/>\nBO lifetime, keeping the shared resv alive on every path.<\/p>\n<p>v2:<br \/>\n  &#8211; Reworked the fix to avoid creating the imported sg BO before<br \/>\n    dma_buf_dynamic_attach() succeeds.<br \/>\n  &#8211; Attach with importer_priv == NULL and make invalidate_mappings ignore<br \/>\n    incomplete imports.<\/p>\n<p>v3:<br \/>\n  &#8211; Dropped the xe-side reordering approach since importer_priv must be<br \/>\n    valid when dma_buf_dynamic_attach() publishes the attachment.<br \/>\n  &#8211; Per Christian&#8217;s suggestion on the v1 thread, keyed the check on<br \/>\n    import_attach rather than removing the sg guard entirely.<br \/>\n  &#8211; Fixes both xe and amdgpu in a single TTM patch.<\/p>\n<p>v4:<br \/>\n  &#8211; Moved import_attach check to after dma_resv_copy_fences() so fences<br \/>\n    are copied before returning for successful imports (Thomas).<br \/>\n  &#8211; Removed exporter-alive claim from commit message (Thomas).<\/p>\n<p>v5:<br \/>\n  &#8211; Add drm\/xe patch to keep imported sg BOs off the LRU before attach<br \/>\n    succeeds; the TTM fix alone is not sufficient for xe if the BO is<br \/>\n    already LRU-visible. (Thomas)<br \/>\n    v4 patch:<br \/>\n    https:\/\/patchwork.freedesktop.org\/patch\/736663\/?series=169129&#038;rev=2<br \/>\n  &#8211; Patch 1 (drm\/ttm) carries Christian&#8217;s Reviewed-by from v4.<\/p>\n<p>v6:<br \/>\n  &#8211; Reworked the fix based on Thomas&#8217; suggestion. Instead of the TTM resv<br \/>\n    individualization (v1-v5) plus the xe off-LRU\/placement handling (v5),<br \/>\n    just hold a dma-buf reference for the imported BO lifetime so the<br \/>\n    shared resv can never be freed while the BO still references it.<br \/>\n    Single xe patch, no TTM change. (Thomas)<br \/>\n  &#8211; Take the reference in xe_bo_init_locked() before ttm_bo_init_reserved()<br \/>\n    so a TTM creation failure is covered too (Thomas).<br \/>\n  &#8211; Dropped the v5 series (drm\/ttm + drm\/xe off-LRU); the off-LRU approach<br \/>\n    also regressed in CI BAT via ttm_bo_pipeline_gutting() creating a ghost<br \/>\n    BO that outlived the exporter.<br \/>\n    Link to v5: https:\/\/patchwork.freedesktop.org\/series\/169984\/<\/p>\n<p>v7:<br \/>\n  &#8211; Move changelog above &#8212; so it stays in the commit message.<br \/>\n  &#8211; Reorder changelog entries oldest-to-newest. (Thomas)<\/p>\n<p>(cherry picked from commit 3516f3fae6be35642f8f06f8a218da6425c0306a)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>drm\/xe: Hold a dma-buf reference for imported BOs<\/p>\n<p>An imported dma-buf BO is created as a ttm_bo_type_sg BO whose<br \/>\nreservation objec<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-5405","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/5405","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln"}],"about":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/types\/vuln"}],"wp:attachment":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=5405"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=5405"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=5405"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}