From: Amir Shehata Date: Sat, 1 Jul 2017 01:06:40 +0000 (-0700) Subject: LU-9729 lnet: correct locking in legacy add net X-Git-Tag: 2.10.51~52 X-Git-Url: https://git.whamcloud.com/gitweb?a=commitdiff_plain;h=refs%2Fchanges%2F07%2F27907%2F3;p=fs%2Flustre-release.git LU-9729 lnet: correct locking in legacy add net Make sure to unlock the api mutex properly in lnet_dyn_add_net() Test-Parameters: trivial Signed-off-by: Amir Shehata Change-Id: I786545de690ea5966771be3e84d3561b794d55ec Reviewed-on: https://review.whamcloud.com/27907 Tested-by: Jenkins Tested-by: Maloo Reviewed-by: Olaf Weber Reviewed-by: Sonia Sharma Reviewed-by: Oleg Drokin --- diff --git a/lnet/lnet/api-ni.c b/lnet/lnet/api-ni.c index e63feac..e912e58 100644 --- a/lnet/lnet/api-ni.c +++ b/lnet/lnet/api-ni.c @@ -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);