summaryrefslogtreecommitdiff
path: root/net/openvswitch/vport-netdev.c
diff options
context:
space:
mode:
authorIngo Molnar <mingo@kernel.org>2015-12-14 09:31:23 +0100
committerIngo Molnar <mingo@kernel.org>2015-12-14 09:31:23 +0100
commit057032e457f702e2f4af18cfa99c3afab6841d24 (patch)
treed46c8325756a3a2be28c286b1408e2e314e3dafb /net/openvswitch/vport-netdev.c
parent54c9238cfd495d234b0e02fa7dcce5b1671a42dd (diff)
parent9f9499ae8e6415cefc4fe0a96ad0e27864353c89 (diff)
Merge tag 'v4.4-rc5' into perf/core, to pick up fixes
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'net/openvswitch/vport-netdev.c')
-rw-r--r--net/openvswitch/vport-netdev.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/net/openvswitch/vport-netdev.c b/net/openvswitch/vport-netdev.c
index b327368a3848..6b0190b987ec 100644
--- a/net/openvswitch/vport-netdev.c
+++ b/net/openvswitch/vport-netdev.c
@@ -180,9 +180,13 @@ void ovs_netdev_tunnel_destroy(struct vport *vport)
if (vport->dev->priv_flags & IFF_OVS_DATAPATH)
ovs_netdev_detach_dev(vport);
- /* Early release so we can unregister the device */
+ /* We can be invoked by both explicit vport deletion and
+ * underlying netdev deregistration; delete the link only
+ * if it's not already shutting down.
+ */
+ if (vport->dev->reg_state == NETREG_REGISTERED)
+ rtnl_delete_link(vport->dev);
dev_put(vport->dev);
- rtnl_delete_link(vport->dev);
vport->dev = NULL;
rtnl_unlock();