{"id":7474,"date":"2026-09-04T18:49:34","date_gmt":"2026-09-04T10:49:34","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-74481"},"modified":"2026-09-04T18:49:34","modified_gmt":"2026-09-04T10:49:34","slug":"cve-2026-74481","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-74481","title":{"rendered":"CVE-2026-74481 [HIGH] &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nmm\/page_reporting: us"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>mm\/page_reporting: use system_freezable_wq to fix UAF during suspend<\/p>\n<p>During PM freeze (e.g.  S3 suspend or S4 hibernation), device drivers like<br \/>\nvirtio_balloon reset their underlying virtio devices and delete their<br \/>\nvirtqueues via vdev-&gt;config-&gt;del_vqs().<\/p>\n<p>However, page reporting work (page_reporting_process) was scheduled on the<br \/>\nglobal system_wq.  Because system_wq lacks the WQ_FREEZABLE flag, the PM<br \/>\nfreezer skips it, leaving page_reporting_process active during suspend.<\/p>\n<p>If pages are freed into the buddy allocator while suspending (for example,<br \/>\nwhen core MM invokes the balloon shrinker during S4 hibernation image<br \/>\nsaving), page reporting triggers virtballoon_free_page_report() on deleted<br \/>\nvirtqueues, resulting in a Use-After-Free \/ General Protection Fault:<\/p>\n<p>    [  196.795226] general protection fault, probably for non-canonical address 0xaa1436fe70dae6df: 0000 [#1] SMP NOPTI<br \/>\n    [  196.825967] Workqueue: events page_reporting_process<br \/>\n    [  196.831038] RIP: 0010:virtqueue_add_split+0x233\/0x4c0 [virtio_ring]<br \/>\n    [  196.927073] virtballoon_free_page_report+0x3a\/0xe0 [virtio_balloon]<br \/>\n    [  196.946943] page_reporting_process+0x370\/0x4f0<\/p>\n<p>Fix this by switching page reporting work to system_freezable_wq.  This<br \/>\nensures that the PM freezer pauses page_reporting_process before device<br \/>\ndrivers destroy their reporting virtqueues.  Because the reporting worker<br \/>\nis frozen, memory reclamation\/freeing (e.g.  via shrinker execution) can<br \/>\nsafely return pages to MM during freeze without triggering unfrozen<br \/>\nreporting work on deleted virtqueues.<\/p>\n<p>This aligns with the driver&#8217;s existing design. The comment in<br \/>\nvirtballoon_freeze() states:<br \/>\n    \/*<br \/>\n     * The workqueue is already frozen by the PM core before this<br \/>\n     * function is called.<br \/>\n     *\/<\/p>\n<p>Testing:<br \/>\nI have verified these fixes using Google\u2019s virtualization infrastructure<br \/>\nby running continuous suspend\/resume iterations (40+ cycles) while<br \/>\nchurning memory using stress-ng (`stress-ng &#8211;vm 4 &#8211;vm-bytes 60%<br \/>\n&#8211;timeout 1`) to constantly create free pages for the buddy allocator.  We<br \/>\nalso set the `page_reporting_order` parameter to 0 to make the page<br \/>\nreporting worker highly sensitive, forcing it to pick up any 4K free<br \/>\npages.  This confirmed that the UAF crashes are no longer reproducible.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>mm\/page_reporting: use system_freezable_wq to fix UAF during suspend<\/p>\n<p>During PM freeze (e.g.  S3 suspend or S4 hibernation), device<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-7474","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/7474","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=7474"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=7474"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=7474"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}