openvswitch: Fix double-free on ip_defrag() errors
authorJoe Stringer <joestringer@nicira.com>
Mon, 26 Oct 2015 03:21:48 +0000 (20:21 -0700)
committerDavid S. Miller <davem@davemloft.net>
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 <fw@strlen.de>
Signed-off-by: Joe Stringer <joestringer@nicira.com>
Acked-by: Pravin B Shelar <pshelar@nicira.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/openvswitch/actions.c
net/openvswitch/conntrack.c
net/openvswitch/conntrack.h