openvswitch: Fix double-free on ip_defrag() errors
authorJoe Stringer <[email protected]>
Mon, 26 Oct 2015 03:21:48 +0000 (20:21 -0700)
committerDavid S. Miller <[email protected]>
Wed, 28 Oct 2015 02:32:14 +0000 (19:32 -0700)
commit74c16618137f1505b0a32dea3ec73a2ef6f8f842
treea85b6a44ec0f5d8d7ae915968ee88250c323a292
parentc2229fe1430d4e1c70e36520229dd64a87802b20
openvswitch: Fix double-free on ip_defrag() errors

If ip_defrag() returns an error other than -EINPROGRESS, then the skb is
freed. When handle_fragments() passes this back up to
do_execute_actions(), it will be freed again. Prevent this double free
by never freeing the skb in do_execute_actions() for errors returned by
ovs_ct_execute. Always free it in ovs_ct_execute() error paths instead.

Fixes: 7f8a436eaa2c ("openvswitch: Add conntrack action")
Reported-by: Florian Westphal <[email protected]>
Signed-off-by: Joe Stringer <[email protected]>
Acked-by: Pravin B Shelar <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
net/openvswitch/actions.c
net/openvswitch/conntrack.c
net/openvswitch/conntrack.h