{"id":29056,"date":"2026-09-25T20:31:46","date_gmt":"2026-09-25T12:31:46","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-97900"},"modified":"2026-09-25T20:31:46","modified_gmt":"2026-09-25T12:31:46","slug":"cve-2026-97900","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-97900","title":{"rendered":"CVE-2026-97900 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\ndrm\/drm_exec: fix up"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>drm\/drm_exec: fix up contended obj when num_objects is 0<\/p>\n<p>drm_exec_prepare_array() silently returns success without calling<br \/>\ndrm_exec_lock_contended() when num_objects is zero. This breaks the<br \/>\ninvariant upheld by drm_exec_lock_obj(), where every entry point into<br \/>\nthe locking sequence must first attempt to lock any previously<br \/>\ncontended object before proceeding.<\/p>\n<p>Drivers that chain multiple drm_exec_prepare_array() calls per<br \/>\ndrm_exec_until_all_locked() iteration (e.g. amdgpu&#8217;s userq signal\/wait<br \/>\nioctls, which prepare separate read and write BO arrays) can pass an<br \/>\nempty array for one of the two calls. If contention is hit while<br \/>\npreparing the non-empty array, exec-&gt;contended is set and the loop<br \/>\nretries; on retry, the empty-array call preceding it is a no-op that<br \/>\nnever clears exec-&gt;contended, so drm_exec_retry_on_contention()<br \/>\nimmediately jumps back to the top of the loop without ever reaching<br \/>\nthe call that would resolve the contention. This spins forever.<\/p>\n<p>Fix it by having drm_exec_prepare_array() call drm_exec_lock_contended()<br \/>\ndirectly when num_objects is zero, so a pending contended object dont<br \/>\nloop infinitely.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>drm\/drm_exec: fix up contended obj when num_objects is 0<\/p>\n<p>drm_exec_prepare_array() silently returns success without calling<br \/>\ndrm_exe<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-29056","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/29056","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=29056"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=29056"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=29056"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}