+
+error_free:
+ kfree(patchconf);
+error:
+ return err;
+}
+
+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) {
+ const char *peer_name;
+
+ peer_name = rtnl_dereference(peer_vport->patchconf)->peer_name;
+ if (!strcmp(peer_name, name))
+ rcu_assign_pointer(peer_vport->peer, vport);
+ }