The kernel-space is incorrectly sending two NETLINK messages to the user-space
if OVS_VPORT_CMD_SET command failed (one unnecessary success message and also
one error message with the same sequence ID).

This caused user-space to lose the track of reply message that contained error
reported by the kernel module (e.g. when user-space attempts to create two
tunnels with duplicate configs).

Issue#10285
Signed-off-by: Ansis Atteka <aatt...@nicira.com>
---
 datapath/datapath.c |   19 +++++++++----------
 1 files changed, 9 insertions(+), 10 deletions(-)

diff --git a/datapath/datapath.c b/datapath/datapath.c
index d64fc32..daf7b69 100644
--- a/datapath/datapath.c
+++ b/datapath/datapath.c
@@ -1879,18 +1879,17 @@ static int ovs_vport_cmd_set(struct sk_buff *skb, 
struct genl_info *info)
        if (!err && a[OVS_VPORT_ATTR_UPCALL_PID])
                vport->upcall_pid = nla_get_u32(a[OVS_VPORT_ATTR_UPCALL_PID]);
 
-       reply = ovs_vport_cmd_build_info(vport, info->snd_pid, info->snd_seq,
-                                        OVS_VPORT_CMD_NEW);
-       if (IS_ERR(reply)) {
-               err = PTR_ERR(reply);
-               netlink_set_err(GENL_SOCK(sock_net(skb->sk)), 0,
-                               ovs_dp_vport_multicast_group.id, err);
-               return 0;
+       if (!err) {
+               reply = ovs_vport_cmd_build_info(vport, info->snd_pid, 
info->snd_seq,
+                                                OVS_VPORT_CMD_NEW);
+               if (IS_ERR(reply))
+                       netlink_set_err(GENL_SOCK(sock_net(skb->sk)), 0,
+                                       ovs_dp_vport_multicast_group.id, err);
+               else
+                       genl_notify(reply, genl_info_net(info), info->snd_pid,
+                                   ovs_dp_vport_multicast_group.id, 
info->nlhdr, GFP_KERNEL);
        }
 
-       genl_notify(reply, genl_info_net(info), info->snd_pid,
-                   ovs_dp_vport_multicast_group.id, info->nlhdr, GFP_KERNEL);
-
 exit_unlock:
        rtnl_unlock();
 exit:
-- 
1.7.9

_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to