projects
/
firefly-linux-kernel-4.4.55.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'v4.4/topic/mm-kaslr' into linux-linaro-lsk-v4.4
[firefly-linux-kernel-4.4.55.git]
/
net
/
openvswitch
/
vport-netdev.c
diff --git
a/net/openvswitch/vport-netdev.c
b/net/openvswitch/vport-netdev.c
index b327368a3848238013cf0f6f62445569d7e29251..76fcaf1fd2a9c9591816b2c1029b302ca2a90efb 100644
(file)
--- a/
net/openvswitch/vport-netdev.c
+++ b/
net/openvswitch/vport-netdev.c
@@
-58,7
+58,7
@@
static void netdev_port_receive(struct sk_buff *skb)
return;
skb_push(skb, ETH_HLEN);
return;
skb_push(skb, ETH_HLEN);
-
ovs_
skb_postpush_rcsum(skb, skb->data, ETH_HLEN);
+ skb_postpush_rcsum(skb, skb->data, ETH_HLEN);
ovs_vport_receive(vport, skb, skb_tunnel_info(skb));
return;
error:
ovs_vport_receive(vport, skb, skb_tunnel_info(skb));
return;
error:
@@
-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);
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);
dev_put(vport->dev);
- rtnl_delete_link(vport->dev);
vport->dev = NULL;
rtnl_unlock();
vport->dev = NULL;
rtnl_unlock();