Management libraries leak resources (memory, file/directory handles).
Also a trailing whitespace fix in one place in libibcommon.

Signed-off-by: Michael S. Tsirkin <[EMAIL PROTECTED]>

Index: libibumad/src/umad.c
===================================================================
--- libibumad/src/umad.c        (revision 2411)
+++ libibumad/src/umad.c        (working copy)
@@ -357,8 +357,10 @@ get_ca(char *ca_name, umad_ca_t *ca)
        if (!(dir = opendir(dir_name)))
                return -ENOENT;
 
-       if ((r = scandir(dir_name, &namelist, 0, alphasort)) < 0)
-               return -EIO;
+       if ((r = scandir(dir_name, &namelist, 0, alphasort)) < 0) {
+               ret = errno < 0 ? errno : -EIO;
+               goto error;
+       }
 
        ret = 0;
        ca->numports = 0;
@@ -388,6 +390,7 @@ get_ca(char *ca_name, umad_ca_t *ca)
                free(namelist[i]);
        free(namelist);
 
+       closedir(dir);
        put_ca(ca);
        return 0;
 
@@ -395,7 +398,8 @@ clean:
        for (i = 0; i < r; i++)
                free(namelist[i]);
        free(namelist);
-
+error:
+       closedir(dir);
        release_ca(ca);
 
        return ret;
Index: libibcommon/src/sysfs.c
===================================================================
--- libibcommon/src/sysfs.c     (revision 2411)
+++ libibcommon/src/sysfs.c     (working copy)
@@ -56,6 +56,7 @@
 #include <sys/poll.h>
 #include <syslog.h>
 #include <netinet/in.h>
+#include <errno.h>
 
 #include "common.h"
 
@@ -86,14 +87,20 @@ sys_read_string(char *dir_name, char *fi
        if ((fd = open(path, O_RDONLY)) < 0)
                return ret_code();
 
-       if ((r = read(fd, str, max_len)) < 0)
+       if ((r = read(fd, str, max_len)) < 0) {
+               int e = errno;
+               close(fd);
+               errno = e;
                return ret_code();
+       }
 
        str[(r < max_len) ? r : max_len - 1] = 0;
 
        if ((s = strrchr(str, '\n')))
                *s = 0;
-       return 0;       
+
+       close(fd);
+       return 0;
 }
 
 int

-- 
MST - Michael S. Tsirkin
_______________________________________________
openib-general mailing list
openib-general@openib.org
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general

Reply via email to