diff options
author | Martynas Pumputis <martynas@weave.works> | 2016-08-09 15:24:50 (GMT) |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2016-08-11 06:13:23 (GMT) |
commit | 4b5b9ba553f9aa5f484ab972fc9b58061885ceca (patch) | |
tree | a49284b85664db33831c1d8a6d115a38ba045457 /net/openvswitch/vport-vxlan.c | |
parent | dafa6b0db2d62164c5ef81a40312d5ba514126b9 (diff) | |
download | linux-4b5b9ba553f9aa5f484ab972fc9b58061885ceca.tar.xz |
openvswitch: do not ignore netdev errors when creating tunnel vports
The creation of a tunnel vport (geneve, gre, vxlan) brings up a
corresponding netdev, a multi-step operation which can fail.
For example, changing a vxlan vport's netdev state to 'up' binds the
vport's socket to a UDP port - if the binding fails (e.g. due to the
port being in use), the error is currently ignored giving the
appearance that the tunnel vport creation completed successfully.
Signed-off-by: Martynas Pumputis <martynas@weave.works>
Acked-by: Pravin B Shelar <pshelar@ovn.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/openvswitch/vport-vxlan.c')
-rw-r--r-- | net/openvswitch/vport-vxlan.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/net/openvswitch/vport-vxlan.c b/net/openvswitch/vport-vxlan.c index 5eb7694..7eb955e 100644 --- a/net/openvswitch/vport-vxlan.c +++ b/net/openvswitch/vport-vxlan.c @@ -130,7 +130,14 @@ static struct vport *vxlan_tnl_create(const struct vport_parms *parms) return ERR_CAST(dev); } - dev_change_flags(dev, dev->flags | IFF_UP); + err = dev_change_flags(dev, dev->flags | IFF_UP); + if (err < 0) { + rtnl_delete_link(dev); + rtnl_unlock(); + ovs_vport_free(vport); + goto error; + } + rtnl_unlock(); return vport; error: |