{"id":24649,"date":"2026-09-16T20:32:35","date_gmt":"2026-09-16T12:32:35","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-89962"},"modified":"2026-09-16T20:32:35","modified_gmt":"2026-09-16T12:32:35","slug":"cve-2026-89962","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-89962","title":{"rendered":"CVE-2026-89962 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\npowerpc\/kexec_file: P"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>powerpc\/kexec_file: Prevent kexec range truncation<\/p>\n<p>Sashiko AI review pointed out the following issue.<\/p>\n<p>The __merge_memory_ranges() function incorrectly handles overlapping<br \/>\nmemory ranges when merging them. Although sort_memory_ranges() sorts all<br \/>\nranges by their start address in ascending order beforehand, the merge<br \/>\nlogic remains defective in two ways:<\/p>\n<p>1. It compares the current range&#8217;s start against the previous element (i-1)<br \/>\n   instead of the running target index (idx)<\/p>\n<p>2. It unconditionally overwrites &#8216;ranges[idx].end&#8217; with &#8216;ranges[i].end&#8217;.<\/p>\n<p>This logic flaw leads to critical memory truncation when a larger memory<br \/>\nrange completely subsumes subsequent smaller ranges.<\/p>\n<p>For example, consider a sorted input array with three ranges:<br \/>\n  Range A (idx=0): [0x1000 &#8211; 0x9000]<br \/>\n  Range B (i=1):   [0x2000 &#8211; 0x5000] (completely inside Range A)<br \/>\n  Range C (i=2):   [0x6000 &#8211; 0x8000] (completely inside Range A)<\/p>\n<p>1. When i=1 (Range B):<br \/>\n   ranges[1].start (0x2000) &lt;= ranges[0].end + 1 (0x9001) is TRUE.<br \/>\n   The code executes: ranges[0].end = ranges[1].end, which erroneously<br \/>\n   shrinks Range A&#039;s end from 0x9000 down to 0x5000.<\/p>\n<p>2. When i=2 (Range C):<br \/>\n   ranges[2].start (0x6000) &lt;= ranges[1].end + 1 (0x5001) is FALSE.<br \/>\n   The code falls into the else block, creating a broken new range.<\/p>\n<p>As a result, valid memory fragments [0x5001 &#8211; 0x5fff] and [0x8001 &#8211; 0x9000]<br \/>\nare completely lost from the kexec exclude lists, potentially allowing<br \/>\nthe crash kernel to overwrite active memory, causing data corruption<br \/>\nor crashes.<\/p>\n<p>Fix this by ensuring the start of the current range is compared against the<br \/>\nend of the active merged range (idx), and use max() to safely prevent the<br \/>\nouter boundary from being truncated.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>powerpc\/kexec_file: Prevent kexec range truncation<\/p>\n<p>Sashiko AI review pointed out the following issue.<\/p>\n<p>The __merge_memory_ranges()<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-24649","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/24649","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=24649"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=24649"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=24649"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}