{"id":20399,"date":"2026-09-10T04:31:43","date_gmt":"2026-09-09T20:31:43","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-80916"},"modified":"2026-09-10T04:31:43","modified_gmt":"2026-09-09T20:31:43","slug":"cve-2026-80916","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-80916","title":{"rendered":"CVE-2026-80916 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nkcov: fix data corrup"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>kcov: fix data corruption and race conditions on PREEMPT_RT<\/p>\n<p>syzbot is reporting KCOV state corruption on PREEMPT_RT kernels, for the<br \/>\ntemporary storage used for saving\/restoring remote KCOV state is currently<br \/>\nallocated as the per-CPU area.<\/p>\n<p>On PREEMPT_RT kernels, softirq handlers run as preemptible task threads<br \/>\n(e.g., ksoftirqd). If a softirq context preempts a task running a remote<br \/>\nKCOV session, it safely saves the task&#8217;s state into the per-CPU area.<br \/>\nHowever, if that softirq thread is subsequently preempted by a higher-<br \/>\npriority softirq thread on the same CPU, the second softirq will overwrite<br \/>\nthe same per-CPU area, permanently destroying the original task&#8217;s KCOV<br \/>\nstate.<\/p>\n<p>Fix this data corruption by moving the temporary storage from the per-CPU<br \/>\narea to the per-thread area. Since each softirq thread now owns its own<br \/>\ntask context, nested softirq preemption no longer causes data overwrites.<\/p>\n<p>Note that while the temporary storage is now on a per-thread basis, the<br \/>\nper-CPU kcov_percpu_data.lock must be retained, for we need to ensure that<br \/>\nkcov_remote_start() and kcov_remote_stop() operate atomically without<br \/>\nracing against asynchronous interrupts that manipulate the current task&#8217;s<br \/>\nKCOV state.<\/p>\n<p>It is likely that GFP_KERNEL allocation by vmalloc_node() in kcov_init()<br \/>\nhas already called panic() before returning NULL, for there will be no<br \/>\nOOM-killable userspace processes when __init function of built-in module<br \/>\nruns. But this patch also fixes crashing the kernel when vmalloc_node()<br \/>\nin kcov_init() returned NULL, for kcov_init() left per-CPU irq_area == NULL<br \/>\nbut kcov_remote_start() depends on per-CPU irq_area != NULL, resulting in<\/p>\n<p>  (1) doing vmalloc() in kcov_remote_start() despite !in_task() context<\/p>\n<p>  (2) out-of-array-bounds access if (1) succeeded but<br \/>\n      kcov-&gt;remote_size &lt; CONFIG_KCOV_IRQ_AREA_SIZE<\/p>\n<p>  (3) always leak memory allocated by (1), eventually killing all<br \/>\n      OOM-killable userspace processes<\/p>\n<p>problems.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>kcov: fix data corruption and race conditions on PREEMPT_RT<\/p>\n<p>syzbot is reporting KCOV state corruption on PREEMPT_RT kernels, for t<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-20399","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/20399","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=20399"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=20399"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=20399"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}