linux/net/openvswitch
Ilya Maximets 6cc523eaee net: openvswitch: fix skb leak on flow key update failure during ct
commit bc62e843bc upstream.

ovs_ct_execute() always steals or frees the skb on failure while
ovs_flow_key_update() does not.  So, if it fails and we return right
away, the skb ends up leaked.

Fix that by breaking instead and letting the common error handling
code at the bottom of the loop to free the skb properly.

This is a very unlikely scenario as it requires the packet to become
unparseable by applying a set of actions on a previously parseable skb,
but should be fixed nevertheless.

Reported by Sashiko.

Fixes: ec0d043d05 ("openvswitch: Ensure flow is valid before executing ct")
Cc: stable@vger.kernel.org
Signed-off-by: Ilya Maximets <i.maximets@ovn.org>
Reviewed-by: Aaron Conole <aconole@redhat.com>
Link: https://patch.msgid.link/20260727181851.306076-3-i.maximets@ovn.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2026-08-19 17:14:11 +02:00
..
actions.c net: openvswitch: fix skb leak on flow key update failure during ct 2026-08-19 17:14:11 +02:00
conntrack.c netfilter: nf_conncount: callers must hold rcu read lock 2026-07-24 15:51:36 +02:00
conntrack.h net/sched: act_api: fix miss set post_ct for ovs after do conntrack in act_ct 2021-03-16 15:22:18 -07:00
datapath.c openvswitch: fix GSO userspace truncation underflow 2026-08-19 17:14:05 +02:00
datapath.h openvswitch: fix GSO userspace truncation underflow 2026-08-19 17:14:05 +02:00
dp_notify.c net: openvswitch: use netif_ovs_is_port() instead of opencode 2019-07-08 15:53:25 -07:00
flow.c net: openvswitch: Fix the dead loop of MPLS parse 2025-06-27 11:05:14 +01:00
flow.h treewide: Use sizeof_field() macro 2019-12-09 10:36:44 -08:00
flow_netlink.c net: openvswitch: reject oversized nested action attrs 2026-07-24 15:51:55 +02:00
flow_netlink.h net: openvswitch: remove never-working support for setting nsh fields 2025-12-07 06:09:31 +09:00
flow_table.c openvswitch: Optimize operation for key comparison 2021-07-01 11:13:10 -07:00
flow_table.h net: openvswitch: fix to make sure flow_lookup() is not preempted 2020-10-18 12:29:36 -07:00
Kconfig treewide: replace '---help---' in Kconfig files with 'help' 2020-06-14 01:57:21 +09:00
Makefile openvswitch: add trace points 2021-06-22 10:47:32 -07:00
meter.c net: openvswitch: fix potential UAF on meter attach failure 2026-08-19 17:14:11 +02:00
meter.h net: openvswitch: use u64 for meter bucket 2020-04-23 18:26:11 -07:00
openvswitch_trace.c openvswitch: add trace points 2021-06-22 10:47:32 -07:00
openvswitch_trace.h openvswitch: add trace points 2021-06-22 10:47:32 -07:00
vport-geneve.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
vport-gre.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 269 2019-06-05 17:30:29 +02:00
vport-internal_dev.c net: openvswitch: use core API to update/provide stats 2020-11-14 16:59:32 -08:00
vport-internal_dev.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 269 2019-06-05 17:30:29 +02:00
vport-netdev.c net: openvswitch: Avoid releasing netdev before teardown completes 2026-04-18 10:33:24 +02:00
vport-netdev.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 269 2019-06-05 17:30:29 +02:00
vport-vxlan.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 269 2019-06-05 17:30:29 +02:00
vport.c openvswitch: fix GSO userspace truncation underflow 2026-08-19 17:14:05 +02:00
vport.h openvswitch: Fix a typo 2021-03-22 12:59:46 -07:00