aboutsummaryrefslogtreecommitdiffstats
path: root/net/openvswitch/datapath.c
diff options
context:
space:
mode:
authorAnsis Atteka <aatteka@nicira.com>2012-05-03 21:40:38 -0400
committerJesse Gross <jesse@nicira.com>2012-05-03 21:40:38 -0400
commit4cb6e116bb97c8b87a1f4f95e99d0c8dda2a6e9b (patch)
tree071d9dfaa2cb307e0af570ae2455ce8deee9dbce /net/openvswitch/datapath.c
parentbf32fecdc1851ad9ca960f56771b798d17c26cf1 (diff)
openvswitch: Release rtnl_lock if ovs_vport_cmd_build_info() failed.
This patch fixes a possible lock-up bug where rtnl_lock might not get released. Signed-off-by: Ansis Atteka <aatteka@nicira.com> Signed-off-by: Jesse Gross <jesse@nicira.com>
Diffstat (limited to 'net/openvswitch/datapath.c')
-rw-r--r--net/openvswitch/datapath.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/net/openvswitch/datapath.c b/net/openvswitch/datapath.c
index e44e631ea952..4cb615d46363 100644
--- a/net/openvswitch/datapath.c
+++ b/net/openvswitch/datapath.c
@@ -1641,10 +1641,9 @@ static int ovs_vport_cmd_set(struct sk_buff *skb, struct genl_info *info)
1641 reply = ovs_vport_cmd_build_info(vport, info->snd_pid, info->snd_seq, 1641 reply = ovs_vport_cmd_build_info(vport, info->snd_pid, info->snd_seq,
1642 OVS_VPORT_CMD_NEW); 1642 OVS_VPORT_CMD_NEW);
1643 if (IS_ERR(reply)) { 1643 if (IS_ERR(reply)) {
1644 err = PTR_ERR(reply);
1645 netlink_set_err(init_net.genl_sock, 0, 1644 netlink_set_err(init_net.genl_sock, 0,
1646 ovs_dp_vport_multicast_group.id, err); 1645 ovs_dp_vport_multicast_group.id, PTR_ERR(reply));
1647 return 0; 1646 goto exit_unlock;
1648 } 1647 }
1649 1648
1650 genl_notify(reply, genl_info_net(info), info->snd_pid, 1649 genl_notify(reply, genl_info_net(info), info->snd_pid,