{"id":15467,"date":"2026-09-04T19:04:17","date_gmt":"2026-09-04T11:04:17","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-46250"},"modified":"2026-09-04T19:04:17","modified_gmt":"2026-09-04T11:04:17","slug":"cve-2026-46250","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-46250","title":{"rendered":"CVE-2026-46250 [HIGH] &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nMIPS: Work around LLV"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>MIPS: Work around LLVM bug when gp is used as global register variable<\/p>\n<p>On MIPS, __current_thread_info is defined as global register variable<br \/>\nlocating in $gp, and is simply assigned with new address during kernel<br \/>\nrelocation.<\/p>\n<p>This however is broken with LLVM, which always restores $gp if it finds<br \/>\n$gp is clobbered in any form, including when intentionally through a<br \/>\nglobal register variable. This is against GCC&#8217;s documentation[1], which<br \/>\nrequires a callee-saved register used as global register variable not to<br \/>\nbe restored if it&#8217;s clobbered.<\/p>\n<p>As a result, $gp will continue to point to the unrelocated kernel after<br \/>\nthe epilog of relocate_kernel(), leading to an early crash in init_idle,<\/p>\n<p>[    0.000000] CPU 0 Unable to handle kernel paging request at virtual address 0000000000000000, epc == ffffffff81afada8, ra == ffffffff81afad90<br \/>\n[    0.000000] Oops[#1]:<br \/>\n[    0.000000] CPU: 0 UID: 0 PID: 0 Comm: swapper Tainted: G        W           6.19.0-rc5-00262-gd3eeb99bbc99-dirty #188 VOLUNTARY<br \/>\n[    0.000000] Tainted: [W]=WARN<br \/>\n[    0.000000] Hardware name: loongson,loongson64v-4core-virtio<br \/>\n[    0.000000] $ 0   : 0000000000000000 0000000000000000 0000000000000001 0000000000000000<br \/>\n[    0.000000] $ 4   : ffffffff80b80ec0 ffffffff80b53d48 0000000000000000 00000000000f4240<br \/>\n[    0.000000] $ 8   : 0000000000000100 ffffffff81d82f80 ffffffff81d82f80 0000000000000001<br \/>\n[    0.000000] $12   : 0000000000000000 ffffffff81776f58 00000000000005da 0000000000000002<br \/>\n[    0.000000] $16   : ffffffff80b80e40 0000000000000000 ffffffff80b81614 9800000005dfbe80<br \/>\n[    0.000000] $20   : 00000000540000e0 ffffffff81980000 0000000000000000 ffffffff80f81c80<br \/>\n[    0.000000] $24   : 0000000000000a26 ffffffff8114fb90<br \/>\n[    0.000000] $28   : ffffffff80b50000 ffffffff80b53d40 0000000000000000 ffffffff81afad90<br \/>\n[    0.000000] Hi    : 0000000000000000<br \/>\n[    0.000000] Lo    : 0000000000000000<br \/>\n[    0.000000] epc   : ffffffff81afada8 init_idle+0x130\/0x270<br \/>\n[    0.000000] ra    : ffffffff81afad90 init_idle+0x118\/0x270<br \/>\n[    0.000000] Status: 540000e2\tKX SX UX KERNEL EXL<br \/>\n[    0.000000] Cause : 00000008 (ExcCode 02)<br \/>\n[    0.000000] BadVA : 0000000000000000<br \/>\n[    0.000000] PrId  : 00006305 (ICT Loongson-3)<br \/>\n[    0.000000] Process swapper (pid: 0, threadinfo=(____ptrval____), task=(____ptrval____), tls=0000000000000000)<br \/>\n[    0.000000] Stack : 9800000005dfbf00 ffffffff8178e950 0000000000000000 0000000000000000<br \/>\n[    0.000000]         0000000000000000 ffffffff81970000 000000000000003f ffffffff810a6528<br \/>\n[    0.000000]         0000000000000001 9800000005dfbe80 9800000005dfbf00 ffffffff81980000<br \/>\n[    0.000000]         ffffffff810a6450 ffffffff81afb6c0 0000000000000000 ffffffff810a2258<br \/>\n[    0.000000]         ffffffff81d82ec8 ffffffff8198d010 ffffffff81b67e80 ffffffff8197dd98<br \/>\n[    0.000000]         ffffffff81d81c80 ffffffff81930000 0000000000000040 0000000000000000<br \/>\n[    0.000000]         0000000000000000 0000000000000000 0000000000000000 0000000000000000<br \/>\n[    0.000000]         0000000000000000 000000000000009e ffffffff9fc01000 0000000000000000<br \/>\n[    0.000000]         0000000000000000 0000000000000000 0000000000000000 0000000000000000<br \/>\n[    0.000000]         0000000000000000 ffffffff81ae86dc ffffffff81b3c741 0000000000000002<br \/>\n[    0.000000]         &#8230;<br \/>\n[    0.000000] Call Trace:<br \/>\n[    0.000000] [] init_idle+0x130\/0x270<br \/>\n[    0.000000] [] sched_init+0x5c8\/0x6c0<br \/>\n[    0.000000] [] start_kernel+0x27c\/0x7a8<\/p>\n<p>This bug has been reported to LLVM[2] and affects version from (at<br \/>\nleast) 18 to 21. Let&#8217;s work around this by using inline assembly to<br \/>\nassign $gp before a fix is widely available.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>MIPS: Work around LLVM bug when gp is used as global register variable<\/p>\n<p>On MIPS, __current_thread_info is defined as global registe<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-15467","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/15467","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=15467"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=15467"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=15467"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}