+
+ err = patch_set_config(vport, port->config, patchconf);
+ if (err)
+ goto error_free;
+
+ assign_config_rcu(vport, patchconf);
+
+ hlist_del(&patch_vport->hash_node);
+
+ rcu_assign_pointer(patch_vport->peer, vport_locate(patchconf->peer_name));
+ hlist_add_head(&patch_vport->hash_node, hash_bucket(patchconf->peer_name));
+
+ return 0;
+
+error_free:
+ kfree(patchconf);
+error: