From: Jesse Gross Date: Wed, 14 Aug 2013 22:50:36 +0000 (-0700) Subject: openvswitch: Reset tunnel key between input and output. X-Git-Tag: submit/tizen/20141203.153721~1696^2~7^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=36bf5cc66d60868bcc10aff209defed5a7b71c1d;p=platform%2Fkernel%2Flinux-arm64.git openvswitch: Reset tunnel key between input and output. It doesn't make sense to output a tunnel packet using the same parameters that it was received with since that will generally just result in the packet going back to us. As a result, userspace assumes that the tunnel key is cleared when transitioning through the switch. In the majority of cases this doesn't matter since a packet is either going to a tunnel port (in which the key is overwritten with new values) or to a non-tunnel port (in which case the key is ignored). However, it's theoreticaly possible that userspace could rely on the documented behavior, so this corrects it. Signed-off-by: Jesse Gross --- diff --git a/net/openvswitch/actions.c b/net/openvswitch/actions.c index 22c5f399f1c..ab101f71544 100644 --- a/net/openvswitch/actions.c +++ b/net/openvswitch/actions.c @@ -535,6 +535,7 @@ int ovs_execute_actions(struct datapath *dp, struct sk_buff *skb) { struct sw_flow_actions *acts = rcu_dereference(OVS_CB(skb)->flow->sf_acts); + OVS_CB(skb)->tun_key = NULL; return do_execute_actions(dp, skb, acts->actions, acts->actions_len, false); }