2 Jan 2007 19:06
[Fwd: [PATCH 1/2] idmapd: plug memory leak in dirscancb]
Jeff Layton <jlayton <at> redhat.com>
2007-01-02 18:06:13 GMT
2007-01-02 18:06:13 GMT
Hi Neil, I sent these patches out in late October, but have noticed that they have not yet made it into your git tree. Is there anything preventing them from going in? Thanks, Jeff
From: Jeff Layton <jlayton <at> redhat.com>
Subject: [NFS] [PATCH 1/2] idmapd: plug memory leak in dirscancb
Date: 2006-10-26 18:43:41 GMT
Subject: [NFS] [PATCH 1/2] idmapd: plug memory leak in dirscancb
Date: 2006-10-26 18:43:41 GMT
There is a pretty nasty memory leak in idmapd in dirscancb(). Some of
our customers have reported that idmapd can eat gigabytes of memory on
machines with a large number of mounts and unmounts and a long uptime.
That function uses scandir(), which malloc's an array of strings, but
dirscancb() never frees the strings or the array. The following patch
should correct this, but I've not yet tested it on 1.0.10 (only on the
RHEL4 1.0.6 version). Still, the code is very similar and I'm fairly
certain the problem exists in both versions.
Signed-off-by: Jeff Layton <jlayton <at> redhat.com>
--- nfs-utils-1.0.10/utils/idmapd/idmapd.c.leak
+++ nfs-utils-1.0.10/utils/idmapd/idmapd.c
<at> <at> -464,7 +464,7 <at> <at> dirscancb(int fd, short which, void *dat
goto next;
if ((ic = calloc(1, sizeof(*ic))) == NULL)
- return;
+ goto out;
strlcpy(ic->ic_clid, ents[i]->d_name + 4,
sizeof(ic->ic_clid));
path[0] = '\0';
<at> <at> -474,7 +474,7 <at> <at> dirscancb(int fd, short which, void *dat
if ((ic->ic_dirfd = open(path, O_RDONLY, 0)) == -1) {
idmapd_warn("dirscancb: open(%s)", path);
free(ic);
- return;
+ goto out;
}
strlcat(path, "/idmap", sizeof(path));
<at> <at> -486,7 +486,7 <at> <at> dirscancb(int fd, short which, void *dat
if (nfsopen(ic) == -1) {
close(ic->ic_dirfd);
free(ic);
- return;
+ goto out;
}
ic->ic_id = "Client";
<at> <at> -512,6 +512,11 <at> <at> dirscancb(int fd, short which, void *dat
} else
ic->ic_scanned = 0;
}
+
+out:
+ for (i = 0; i < nent; i++)
+ free(ents[i]);
+ free(ents);
return;
}
-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
NFS maillist - NFS <at> lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nfs
------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys - and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________ NFS maillist - NFS <at> lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/nfs
RSS Feed