Whamcloud - gitweb
LU-9729 lnet: correct locking in legacy add net 07/27907/3
authorAmir Shehata <amir.shehata@intel.com>
Sat, 1 Jul 2017 01:06:40 +0000 (18:06 -0700)
committerOleg Drokin <oleg.drokin@intel.com>
Wed, 19 Jul 2017 03:32:16 +0000 (03:32 +0000)
Make sure to unlock the api mutex properly
in lnet_dyn_add_net()

Test-Parameters: trivial
Signed-off-by: Amir Shehata <amir.shehata@intel.com>
Change-Id: I786545de690ea5966771be3e84d3561b794d55ec
Reviewed-on: https://review.whamcloud.com/27907
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Olaf Weber <olaf.weber@hpe.com>
Reviewed-by: Sonia Sharma <sonia.sharma@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
lnet/lnet/api-ni.c

index e63feac..e912e58 100644 (file)
@@ -2505,7 +2505,7 @@ lnet_dyn_add_net(struct lnet_ioctl_config_data *conf)
 
        if (rc > 1) {
                rc = -EINVAL; /* only add one network per call */
-               goto failed;
+               goto out_unlock_clean;
        }
 
        net = list_entry(net_head.next, struct lnet_net, net_list);
@@ -2525,14 +2525,11 @@ lnet_dyn_add_net(struct lnet_ioctl_config_data *conf)
          conf->cfg_config_u.cfg_net.net_max_tx_credits;
 
        rc = lnet_add_net_common(net, &tun);
-       if (rc != 0)
-               goto failed;
 
-       return 0;
-
-failed:
+out_unlock_clean:
        mutex_unlock(&the_lnet.ln_api_mutex);
        while (!list_empty(&net_head)) {
+               /* net_head list is empty in success case */
                net = list_entry(net_head.next, struct lnet_net, net_list);
                list_del_init(&net->net_list);
                lnet_net_free(net);