@@ -178,6 +178,11 @@ static int nvme_add_ctrl(nvme_host_t h, nvme_ctrl_t c,
178178 int ret ;
179179
180180retry :
181+ /*
182+ * __create_discover_ctrl and callers depend on errno being set
183+ * in the error case.
184+ */
185+ errno = 0 ;
181186 ret = nvmf_add_ctrl (h , c , cfg );
182187 if (!ret )
183188 return 0 ;
@@ -208,9 +213,7 @@ static nvme_ctrl_t __create_discover_ctrl(nvme_root_t r, nvme_host_t h,
208213 strcmp (trcfg -> subsysnqn , NVME_DISC_SUBSYS_NAME ));
209214 tmo = set_discovery_kato (cfg );
210215
211- errno = 0 ;
212216 ret = nvme_add_ctrl (h , c , cfg );
213-
214217 cfg -> keep_alive_tmo = tmo ;
215218 if (ret ) {
216219 nvme_free_ctrl (c );
@@ -1083,7 +1086,7 @@ int nvmf_connect(const char *desc, int argc, char **argv)
10831086
10841087 h = nvme_lookup_host (r , hnqn , hid );
10851088 if (!h ) {
1086- errno = ENOMEM ;
1089+ ret = - ENOMEM ;
10871090 goto out_free ;
10881091 }
10891092 if (hostkey )
@@ -1106,14 +1109,14 @@ int nvmf_connect(const char *desc, int argc, char **argv)
11061109 c = lookup_ctrl (h , & trcfg );
11071110 if (c && nvme_ctrl_get_name (c ) && !cfg .duplicate_connect ) {
11081111 fprintf (stderr , "already connected\n" );
1109- errno = EALREADY ;
1112+ ret = - EALREADY ;
11101113 goto out_free ;
11111114 }
11121115
11131116 c = nvme_create_ctrl (r , subsysnqn , transport , traddr ,
11141117 cfg .host_traddr , cfg .host_iface , trsvcid );
11151118 if (!c ) {
1116- errno = ENOMEM ;
1119+ ret = - ENOMEM ;
11171120 goto out_free ;
11181121 }
11191122
@@ -1122,21 +1125,18 @@ int nvmf_connect(const char *desc, int argc, char **argv)
11221125
11231126 nvme_parse_tls_args (keyring , tls_key , tls_key_identity , & cfg , c );
11241127
1125- errno = 0 ;
11261128 ret = nvme_add_ctrl (h , c , & cfg );
1127- if (ret )
1129+ if (ret ) {
11281130 fprintf (stderr , "could not add new controller: %s\n" ,
1129- nvme_strerror (errno ));
1130- else {
1131- errno = 0 ;
1132- if (flags != - EINVAL )
1133- nvme_show_connect_msg (c , flags );
1131+ nvme_strerror (- ret ));
1132+ } else if (flags != - EINVAL ) {
1133+ nvme_show_connect_msg (c , flags );
11341134 }
11351135
11361136out_free :
11371137 if (dump_config )
11381138 nvme_dump_config (r );
1139- return - errno ;
1139+ return ret ;
11401140}
11411141
11421142static nvme_ctrl_t lookup_nvme_ctrl (nvme_root_t r , const char * name )
0 commit comments