{"id":21327,"date":"2026-09-12T04:31:02","date_gmt":"2026-09-11T20:31:02","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-80994"},"modified":"2026-09-12T04:31:02","modified_gmt":"2026-09-11T20:31:02","slug":"cve-2026-80994","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-80994","title":{"rendered":"CVE-2026-80994 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nnet: openvswitch: fix"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>net: openvswitch: fix flow mask use-after-free on flow deletion<\/p>\n<p>The commit in the Fixes tag below made so flow-&gt;mask free is scheduled<br \/>\nvia RCU right after it is removed from the flow table.  The pointer<br \/>\nstays in the flow structure and it can be accessible while in the same<br \/>\nRCU critical section.  This is done to avoid requiring ovs_mutex for<br \/>\nthe ovs_flow_free().<\/p>\n<p>However, while removing the flow during processing of CMD_DEL, we do<br \/>\nnot take RCU read lock before the removal, and ovs_flow_cmd_fill_info()<br \/>\nuses the flow-&gt;mask pointer afterwards.  The RCU read lock is taken,<br \/>\nbut it&#8217;s already late at that point.  The comment on that line<br \/>\nacknowledges that the lock is cosmetic and doesn&#8217;t serve a real purpose.<\/p>\n<p>This leads to use-after-free if the RCU grace period passes between<br \/>\nremoval and the filling.  It is a short race window, but it is there<br \/>\nand can lead to a real crash in case memory allocation for the info<br \/>\ntakes a bit longer:<\/p>\n<p> BUG: KASAN: slab-use-after-free in __ovs_nla_put_key<br \/>\n             net\/openvswitch\/flow_netlink.c:1996<br \/>\n BUG: KASAN: slab-use-after-free in ovs_nla_put_key+0x2463\/0x2e30<br \/>\n             net\/openvswitch\/flow_netlink.c:2250<br \/>\n Read of size 4 at addr ffff88801ee89970 by task ovs_flow_del_ec\/9487<\/p>\n<p> Call Trace:<\/p>\n<p>  __ovs_nla_put_key net\/openvswitch\/flow_netlink.c:1996<br \/>\n  ovs_nla_put_key+0x2463\/0x2e30 net\/openvswitch\/flow_netlink.c:2250<br \/>\n  ovs_flow_cmd_fill_info+0x420\/0x9c0 net\/openvswitch\/datapath.c:930<br \/>\n  ovs_flow_cmd_del+0x53a\/0x970 net\/openvswitch\/datapath.c:1467<br \/>\n  &#8230;<br \/>\n  netlink_rcv_skb+0x156\/0x420 net\/netlink\/af_netlink.c:2556<\/p>\n<p> Allocated by task 9487:<br \/>\n  mask_alloc net\/openvswitch\/flow_table.c:967<br \/>\n  flow_mask_insert net\/openvswitch\/flow_table.c:1012<br \/>\n  ovs_flow_tbl_insert+0xea2\/0x1a90 net\/openvswitch\/flow_table.c:1084<br \/>\n  ovs_flow_cmd_new+0x7e3\/0xd90 net\/openvswitch\/datapath.c:1086<br \/>\n  &#8230;<br \/>\n  netlink_rcv_skb+0x156\/0x420 net\/netlink\/af_netlink.c:2556<\/p>\n<p> Freed by task 9485:<br \/>\n  rcu_free_sheaf+0x1e\/0x100 mm\/slub.c:5978<br \/>\n  rcu_do_batch kernel\/rcu\/tree.c:2645<br \/>\n  rcu_core+0x59c\/0x10c0 kernel\/rcu\/tree.c:2897<br \/>\n  handle_softirqs+0x1e4\/0x9a0 kernel\/softirq.c:622<br \/>\n  &#8230;<br \/>\n  instr_sysvec_apic_timer_interrupt arch\/x86\/kernel\/apic\/apic.c:1062<\/p>\n<p>ovs_flow_tbl_remove() must be called after the ovs_flow_cmd_fill_info()<br \/>\nto avoid this race.  This also helps with cleaning up the forced cast<br \/>\nand the cosmetic RCU read lock.  Before the commit in the Fixes tag the<br \/>\norder did not matter as long as the flow object itself was not freed.<\/p>\n<p>A wider RCU critical section could be another option, but we have a<br \/>\nGFP_KERNEL allocation in the way.<\/p>\n<p>Reported by Trend Micro&#8217;s Zero Day Initiative as ZDI-CAN-32042.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>net: openvswitch: fix flow mask use-after-free on flow deletion<\/p>\n<p>The commit in the Fixes tag below made so flow-&gt;mask free is sched<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-21327","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/21327","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=21327"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=21327"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=21327"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}