Skip to content

Commit c9aeccb

Browse files
committed
opal/if: open the if framework once in opal_init_util
the if framework is no more open in opal_if*, which plugs several memory leaks Signed-off-by: Gilles Gouaillardet <[email protected]>
1 parent 188b966 commit c9aeccb

File tree

3 files changed

+11
-70
lines changed

3 files changed

+11
-70
lines changed

opal/mca/if/base/if_base_components.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/*
22
* Copyright (c) 2010-2013 Cisco Systems, Inc. All rights reserved.
33
* Copyright (c) 2015 Intel, Inc. All rights reserved.
4-
* Copyright (c) 2015 Research Organization for Information Science
4+
* Copyright (c) 2015-2016 Research Organization for Information Science
55
* and Technology (RIST). All rights reserved.
66
* $COPYRIGHT$
77
*
@@ -79,6 +79,7 @@ static int opal_if_base_close(void)
7979
if (!frameopen) {
8080
return OPAL_SUCCESS;
8181
}
82+
frameopen = false;
8283

8384
while (NULL != (item = opal_list_remove_first(&opal_if_list))) {
8485
OBJ_RELEASE(item);

opal/runtime/opal_init.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@
5252
#include "opal/mca/sec/base/base.h"
5353
#include "opal/mca/timer/base/base.h"
5454
#include "opal/mca/memchecker/base/base.h"
55+
#include "opal/mca/if/base/base.h"
5556
#include "opal/dss/dss.h"
5657
#include "opal/mca/shmem/base/base.h"
5758
#if OPAL_ENABLE_FT_CR == 1
@@ -450,6 +451,13 @@ opal_init_util(int* pargc, char*** pargv)
450451
goto return_error;
451452
}
452453

454+
/* initialize if framework */
455+
if (OPAL_SUCCESS != (ret = mca_base_framework_open(&opal_if_base_framework, 0))) {
456+
fprintf(stderr, "opal_if_base_open() failed -- process will likely abort (%s:%d, returned %d instead of OPAL_SUCCESS)\n",
457+
__FILE__, __LINE__, ret);
458+
return ret;
459+
}
460+
453461
return OPAL_SUCCESS;
454462

455463
return_error:

opal/util/if.c

Lines changed: 1 addition & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
* Copyright (c) 2010-2015 Cisco Systems, Inc. All rights reserved.
1515
* Copyright (c) 2014 Los Alamos National Security, LLC. All rights
1616
* reserved.
17-
* Copyright (c) 2015 Research Organization for Information Science
17+
* Copyright (c) 2015-2016 Research Organization for Information Science
1818
* and Technology (RIST). All rights reserved.
1919
* $COPYRIGHT$
2020
*
@@ -100,10 +100,6 @@ int opal_ifnametoaddr(const char* if_name, struct sockaddr* addr, int length)
100100
{
101101
opal_if_t* intf;
102102

103-
if (OPAL_SUCCESS != mca_base_framework_open(&opal_if_base_framework, 0)) {
104-
return OPAL_ERROR;
105-
}
106-
107103
for (intf = (opal_if_t*)opal_list_get_first(&opal_if_list);
108104
intf != (opal_if_t*)opal_list_get_end(&opal_if_list);
109105
intf = (opal_if_t*)opal_list_get_next(intf)) {
@@ -125,10 +121,6 @@ int opal_ifnametoindex(const char* if_name)
125121
{
126122
opal_if_t* intf;
127123

128-
if (OPAL_SUCCESS != mca_base_framework_open(&opal_if_base_framework, 0)) {
129-
return -1;
130-
}
131-
132124
for (intf = (opal_if_t*)opal_list_get_first(&opal_if_list);
133125
intf != (opal_if_t*)opal_list_get_end(&opal_if_list);
134126
intf = (opal_if_t*)opal_list_get_next(intf)) {
@@ -149,10 +141,6 @@ int16_t opal_ifnametokindex(const char* if_name)
149141
{
150142
opal_if_t* intf;
151143

152-
if (OPAL_SUCCESS != mca_base_framework_open(&opal_if_base_framework, 0)) {
153-
return -1;
154-
}
155-
156144
for (intf = (opal_if_t*)opal_list_get_first(&opal_if_list);
157145
intf != (opal_if_t*)opal_list_get_end(&opal_if_list);
158146
intf = (opal_if_t*)opal_list_get_next(intf)) {
@@ -173,10 +161,6 @@ int opal_ifindextokindex(int if_index)
173161
{
174162
opal_if_t* intf;
175163

176-
if (OPAL_SUCCESS != mca_base_framework_open(&opal_if_base_framework, 0)) {
177-
return -1;
178-
}
179-
180164
for (intf = (opal_if_t*)opal_list_get_first(&opal_if_list);
181165
intf != (opal_if_t*)opal_list_get_end(&opal_if_list);
182166
intf = (opal_if_t*)opal_list_get_next(intf)) {
@@ -207,10 +191,6 @@ int opal_ifaddrtoname(const char* if_addr, char* if_name, int length)
207191
return OPAL_ERR_NOT_FOUND;
208192
}
209193

210-
if (OPAL_SUCCESS != mca_base_framework_open(&opal_if_base_framework, 0)) {
211-
return OPAL_ERROR;
212-
}
213-
214194
memset(&hints, 0, sizeof(hints));
215195
hints.ai_family = PF_UNSPEC;
216196
hints.ai_socktype = SOCK_STREAM;
@@ -274,10 +254,6 @@ int16_t opal_ifaddrtokindex(const char* if_addr)
274254
int if_kernel_index;
275255
size_t len;
276256

277-
if (OPAL_SUCCESS != mca_base_framework_open(&opal_if_base_framework, 0)) {
278-
return OPAL_ERROR;
279-
}
280-
281257
memset(&hints, 0, sizeof(hints));
282258
hints.ai_family = PF_UNSPEC;
283259
hints.ai_socktype = SOCK_STREAM;
@@ -329,10 +305,6 @@ int16_t opal_ifaddrtokindex(const char* if_addr)
329305

330306
int opal_ifcount(void)
331307
{
332-
if (OPAL_SUCCESS != mca_base_framework_open(&opal_if_base_framework, 0)) {
333-
return 0;
334-
}
335-
336308
return opal_list_get_size(&opal_if_list);
337309
}
338310

@@ -346,10 +318,6 @@ int opal_ifbegin(void)
346318
{
347319
opal_if_t *intf;
348320

349-
if (OPAL_SUCCESS != mca_base_framework_open(&opal_if_base_framework, 0)) {
350-
return -1;
351-
}
352-
353321
intf = (opal_if_t*)opal_list_get_first(&opal_if_list);
354322
if (NULL != intf)
355323
return intf->if_index;
@@ -367,10 +335,6 @@ int opal_ifnext(int if_index)
367335
{
368336
opal_if_t *intf;
369337

370-
if (OPAL_SUCCESS != mca_base_framework_open(&opal_if_base_framework, 0)) {
371-
return -1;
372-
}
373-
374338
for (intf = (opal_if_t*)opal_list_get_first(&opal_if_list);
375339
intf != (opal_if_t*)opal_list_get_end(&opal_if_list);
376340
intf = (opal_if_t*)opal_list_get_next(intf)) {
@@ -399,10 +363,6 @@ int opal_ifindextoaddr(int if_index, struct sockaddr* if_addr, unsigned int leng
399363
{
400364
opal_if_t* intf;
401365

402-
if (OPAL_SUCCESS != mca_base_framework_open(&opal_if_base_framework, 0)) {
403-
return OPAL_ERROR;
404-
}
405-
406366
for (intf = (opal_if_t*)opal_list_get_first(&opal_if_list);
407367
intf != (opal_if_t*)opal_list_get_end(&opal_if_list);
408368
intf = (opal_if_t*)opal_list_get_next(intf)) {
@@ -423,10 +383,6 @@ int opal_ifkindextoaddr(int if_kindex, struct sockaddr* if_addr, unsigned int le
423383
{
424384
opal_if_t* intf;
425385

426-
if (OPAL_SUCCESS != mca_base_framework_open(&opal_if_base_framework, 0)) {
427-
return OPAL_ERROR;
428-
}
429-
430386
for (intf = (opal_if_t*)opal_list_get_first(&opal_if_list);
431387
intf != (opal_if_t*)opal_list_get_end(&opal_if_list);
432388
intf = (opal_if_t*)opal_list_get_next(intf)) {
@@ -448,10 +404,6 @@ int opal_ifindextomask(int if_index, uint32_t* if_mask, int length)
448404
{
449405
opal_if_t* intf;
450406

451-
if (OPAL_SUCCESS != mca_base_framework_open(&opal_if_base_framework, 0)) {
452-
return OPAL_ERROR;
453-
}
454-
455407
for (intf = (opal_if_t*)opal_list_get_first(&opal_if_list);
456408
intf != (opal_if_t*)opal_list_get_end(&opal_if_list);
457409
intf = (opal_if_t*)opal_list_get_next(intf)) {
@@ -512,10 +464,6 @@ int opal_ifindextoflags(int if_index, uint32_t* if_flags)
512464
{
513465
opal_if_t* intf;
514466

515-
if (OPAL_SUCCESS != mca_base_framework_open(&opal_if_base_framework, 0)) {
516-
return OPAL_ERROR;
517-
}
518-
519467
for (intf = (opal_if_t*)opal_list_get_first(&opal_if_list);
520468
intf != (opal_if_t*)opal_list_get_end(&opal_if_list);
521469
intf = (opal_if_t*)opal_list_get_next(intf)) {
@@ -538,10 +486,6 @@ int opal_ifindextoname(int if_index, char* if_name, int length)
538486
{
539487
opal_if_t *intf;
540488

541-
if (OPAL_SUCCESS != mca_base_framework_open(&opal_if_base_framework, 0)) {
542-
return OPAL_ERROR;
543-
}
544-
545489
for (intf = (opal_if_t*)opal_list_get_first(&opal_if_list);
546490
intf != (opal_if_t*)opal_list_get_end(&opal_if_list);
547491
intf = (opal_if_t*)opal_list_get_next(intf)) {
@@ -563,10 +507,6 @@ int opal_ifkindextoname(int if_kindex, char* if_name, int length)
563507
{
564508
opal_if_t *intf;
565509

566-
if (OPAL_SUCCESS != mca_base_framework_open(&opal_if_base_framework, 0)) {
567-
return OPAL_ERROR;
568-
}
569-
570510
for (intf = (opal_if_t*)opal_list_get_first(&opal_if_list);
571511
intf != (opal_if_t*)opal_list_get_end(&opal_if_list);
572512
intf = (opal_if_t*)opal_list_get_next(intf)) {
@@ -699,10 +639,6 @@ bool opal_ifisloopback(int if_index)
699639
{
700640
opal_if_t* intf;
701641

702-
if (OPAL_SUCCESS != mca_base_framework_open(&opal_if_base_framework, 0)) {
703-
return OPAL_ERROR;
704-
}
705-
706642
for (intf = (opal_if_t*)opal_list_get_first(&opal_if_list);
707643
intf != (opal_if_t*)opal_list_get_end(&opal_if_list);
708644
intf = (opal_if_t*)opal_list_get_next(intf)) {
@@ -779,10 +715,6 @@ void opal_ifgetaliases(char ***aliases)
779715
/* set default answer */
780716
*aliases = NULL;
781717

782-
if (OPAL_SUCCESS != mca_base_framework_open(&opal_if_base_framework, 0)) {
783-
return;
784-
}
785-
786718
for (intf = (opal_if_t*)opal_list_get_first(&opal_if_list);
787719
intf != (opal_if_t*)opal_list_get_end(&opal_if_list);
788720
intf = (opal_if_t*)opal_list_get_next(intf)) {

0 commit comments

Comments
 (0)