{"id":33382,"date":"2026-10-06T20:31:53","date_gmt":"2026-10-06T12:31:53","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-98313"},"modified":"2026-10-06T20:31:53","modified_gmt":"2026-10-06T12:31:53","slug":"cve-2026-98313","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-98313","title":{"rendered":"CVE-2026-98313 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\ndrm\/msm\/dp: skip PUSH"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>drm\/msm\/dp: skip PUSH_IDLE when the link was never enabled<\/p>\n<p>msm_dp_display_atomic_enable() returns early when link training fails,<br \/>\nleaving -&gt;power_on false and the main link down.<br \/>\nmsm_dp_display_atomic_disable() nevertheless writes DP_STATE_CTRL_PUSH_IDLE<br \/>\nand waits for an idle-pattern completion that cannot arrive, so every failed<br \/>\nenable is followed by &#8220;PUSH_IDLE pattern timedout&#8221;.<\/p>\n<p>Every other step of the teardown is already gated on that flag:<br \/>\nmsm_dp_display_disable(), called from .atomic_post_disable(), returns early<br \/>\non !power_on. The PUSH_IDLE write is the only one that is not, so the<br \/>\ncontroller&#8217;s runtime-PM reference is then dropped without the link having<br \/>\nbeen taken down.<\/p>\n<p>On glymur (Snapdragon X2 Elite) the consequence is not a warning. The SoC<br \/>\ndoes not survive it: TrustZone force-stops the SOCCP and ADSP remote<br \/>\nprocessors and the machine resets silently about 50 ms later, with no oops<br \/>\nand no panic. On an ASUS Zenbook A16 (UX3607OA), whose eDP panel does not<br \/>\ncurrently train, this reproduces without any compositor or GPU involvement:<\/p>\n<p>  # eDP enable has already failed with &#8220;Failed link training (rc=-104)&#8221;<br \/>\n  echo 1 &gt; \/sys\/class\/graphics\/fb0\/blank<\/p>\n<p>  [535.645455] === marker ===<br \/>\n  [535.694833] qcom_q6v5_pas d00000.remoteproc: fatal error received:<br \/>\n                 sys_m_smsm.c:512:TZ force stop<br \/>\n  [535.694875] remoteproc remoteproc0: crash detected in soccp: type fatal error<br \/>\n  [535.728857] qcom_q6v5_pas 6800000.remoteproc: fatal error received:<br \/>\n                 sys_m_smsm.c:783:err fatal notification received from TZ<\/p>\n<p>Gate the PUSH_IDLE write on -&gt;power_on so the disable path is consistent<br \/>\nwith the rest of the teardown. With this applied the same sequence is<br \/>\nharmless and the machine stays up; without it, it resets every time.<\/p>\n<p>The unconditional write dates back to the original DP driver<br \/>\n(c943b4948b58 (&#8220;drm\/msm\/dp: add displayPort driver support&#8221;)), but the<br \/>\nsurrounding code has been restructured several times since, so no Fixes:<br \/>\ntag is offered.<\/p>\n<p>Note that the eDP link-training failure that exposes this on the A16 is a<br \/>\nseparate problem in the glymur eDP PHY and is reported separately; this<br \/>\nchange is about not damaging the machine when training fails, for whatever<br \/>\nreason.<\/p>\n<p>Tested on ASUS Zenbook A16 (UX3607OA), Snapdragon X2 Elite Extreme, on<br \/>\nlinux-next next-20260803 and next-20260807. The machine has since been<br \/>\nrunning next-20260807 with this patch as its daily driver.<\/p>\n<p>Patchwork: https:\/\/patchwork.freedesktop.org\/patch\/745167\/<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>drm\/msm\/dp: skip PUSH_IDLE when the link was never enabled<\/p>\n<p>msm_dp_display_atomic_enable() returns early when link training fails,<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-33382","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/33382","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=33382"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=33382"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=33382"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}