Make sure to unlock the api mutex properly
in lnet_dyn_add_net()
Lustre-change: https://review.whamcloud.com/27907
Lustre-commit:
65326ab2f3e7493f72767cd3c69471f3985c77f6
Test-Parameters: trivial
Signed-off-by: Amir Shehata <amir.shehata@intel.com>
Change-Id: I786545de690ea5966771be3e84d3561b794d55ec
Reviewed-by: Olaf Weber <olaf.weber@hpe.com>
Reviewed-by: Sonia Sharma <sonia.sharma@intel.com>
Signed-off-by: Minh Diep <minh.diep@intel.com>
Reviewed-on: https://review.whamcloud.com/28236
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: John L. Hammond <john.hammond@intel.com>
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);
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);