summaryrefslogtreecommitdiff
path: root/net/openvswitch/vport-vxlan.c
diff options
context:
space:
mode:
authorMartynas Pumputis <martynas@weave.works>2016-08-09 18:24:50 +0300
committerDavid S. Miller <davem@davemloft.net>2016-08-11 09:13:23 +0300
commit4b5b9ba553f9aa5f484ab972fc9b58061885ceca (patch)
treea49284b85664db33831c1d8a6d115a38ba045457 /net/openvswitch/vport-vxlan.c
parentdafa6b0db2d62164c5ef81a40312d5ba514126b9 (diff)
downloadlinux-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.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/net/openvswitch/vport-vxlan.c b/net/openvswitch/vport-vxlan.c
index 5eb7694348b5..7eb955e453e6 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: