| From foo@baz Fri Nov 2 06:12:44 CET 2018 |
| From: "Jaime Caamaño Ruiz" <jcaamano@suse.com> |
| Date: Wed, 31 Oct 2018 18:52:03 +0100 |
| Subject: openvswitch: Fix push/pop ethernet validation |
| |
| From: "Jaime Caamaño Ruiz" <jcaamano@suse.com> |
| |
| [ Upstream commit 46ebe2834ba5b541f28ee72e556a3fed42c47570 ] |
| |
| When there are both pop and push ethernet header actions among the |
| actions to be applied to a packet, an unexpected EINVAL (Invalid |
| argument) error is obtained. This is due to mac_proto not being reset |
| correctly when those actions are validated. |
| |
| Reported-at: |
| https://mail.openvswitch.org/pipermail/ovs-discuss/2018-October/047554.html |
| Fixes: 91820da6ae85 ("openvswitch: add Ethernet push and pop actions") |
| Signed-off-by: Jaime Caamaño Ruiz <jcaamano@suse.com> |
| Tested-by: Greg Rose <gvrose8192@gmail.com> |
| Reviewed-by: Greg Rose <gvrose8192@gmail.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| net/openvswitch/flow_netlink.c | 4 ++-- |
| 1 file changed, 2 insertions(+), 2 deletions(-) |
| |
| --- a/net/openvswitch/flow_netlink.c |
| +++ b/net/openvswitch/flow_netlink.c |
| @@ -2990,7 +2990,7 @@ static int __ovs_nla_copy_actions(struct |
| * is already present */ |
| if (mac_proto != MAC_PROTO_NONE) |
| return -EINVAL; |
| - mac_proto = MAC_PROTO_NONE; |
| + mac_proto = MAC_PROTO_ETHERNET; |
| break; |
| |
| case OVS_ACTION_ATTR_POP_ETH: |
| @@ -2998,7 +2998,7 @@ static int __ovs_nla_copy_actions(struct |
| return -EINVAL; |
| if (vlan_tci & htons(VLAN_TAG_PRESENT)) |
| return -EINVAL; |
| - mac_proto = MAC_PROTO_ETHERNET; |
| + mac_proto = MAC_PROTO_NONE; |
| break; |
| |
| case OVS_ACTION_ATTR_PUSH_NSH: |