diff options
author | Neil Brown <neilb@suse.de> | 2006-06-16 10:26:12 +1000 |
---|---|---|
committer | Neil Brown <neilb@suse.de> | 2006-06-16 10:26:12 +1000 |
commit | eed35d6661e9e53b7ec6d1312baa41bcd4d631ca (patch) | |
tree | e424fa400e87b83e133444d3f6275a4758b71ce4 | |
parent | 02761a7c441485824acc6ae259192aaa16de097a (diff) | |
download | mdadm-eed35d6661e9e53b7ec6d1312baa41bcd4d631ca.tar.gz mdadm-eed35d6661e9e53b7ec6d1312baa41bcd4d631ca.tar.xz mdadm-eed35d6661e9e53b7ec6d1312baa41bcd4d631ca.zip |
Fix memory leak in monitor mode
When rescanning /dev, we didn't free the old list.
Also don't search for device with a number of 0,0
Signed-off-by: Neil Brown <neilb@suse.de>
-rw-r--r-- | util.c | 13 | ||||
-rw-r--r-- | xlate.h | 0 |
2 files changed, 13 insertions, 0 deletions
@@ -416,10 +416,23 @@ char *map_dev(int major, int minor, int create) struct devmap *p; char *std = NULL, *nonstd=NULL; int did_check = 0; + + if (major == 0 && minor == 0) { + if (!create) + return NULL; + else + return "0:0"; + } retry: if (!devlist_ready) { char *dev = "/dev"; struct stat stb; + while(devlist) { + struct devmap *d = devlist; + devlist = d->next; + free(d->name); + free(d); + } if (lstat(dev, &stb)==0 && S_ISLNK(stb.st_mode)) dev = "/dev/."; |