- kfree(patch_vport->devconf);
- vport_free(vport);
-
- return 0;
-}
-
-static void update_peers(const char *name, struct vport *vport)
-{
- struct hlist_head *bucket = hash_bucket(name);
- struct patch_vport *peer_vport;
- struct hlist_node *node;
-
- hlist_for_each_entry(peer_vport, node, bucket, hash_node)
- if (!strcmp(peer_vport->peer_name, name))
- rcu_assign_pointer(peer_vport->peer, vport);
+ update_peers(patch_vport->name, NULL);
+ hlist_del(&patch_vport->hash_node);
+ call_rcu(&patch_vport->rcu, free_port_rcu);