{platform,super}-intel: Fix two resource leaks

The code did not free 'dir' allocated by opendir(). An additional
benefit is that this simplifies the for() loops.

Fixes: 60f0f54d ("IMSM: Add support for VMD")
Reviewed-by: NeilBrown <neilb@suse.com>
Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
This commit is contained in:
Jes Sorensen 2016-03-07 12:33:49 -05:00
parent efdfcc9e95
commit b913501173
2 changed files with 11 additions and 2 deletions

View File

@ -724,8 +724,10 @@ char *vmd_domain_to_controller(struct sys_dev *hba, char *buf)
return NULL;
dir = opendir("/sys/bus/pci/drivers/vmd");
if (!dir)
return NULL;
for (ent = dir ? readdir(dir) : NULL; ent; ent = readdir(dir)) {
for (ent = readdir(dir); ent; ent = readdir(dir)) {
sprintf(path, "/sys/bus/pci/drivers/vmd/%s/domain/device",
ent->d_name);
@ -734,8 +736,11 @@ char *vmd_domain_to_controller(struct sys_dev *hba, char *buf)
if (strncmp(buf, hba->path, strlen(buf)) == 0) {
sprintf(path, "/sys/bus/pci/drivers/vmd/%s", ent->d_name);
closedir(dir);
return realpath(path, buf);
}
}
closedir(dir);
return NULL;
}

View File

@ -1781,7 +1781,10 @@ static int print_vmd_attached_devs(struct sys_dev *hba)
* this hba
*/
dir = opendir("/sys/bus/pci/drivers/nvme");
for (ent = dir ? readdir(dir) : NULL; ent; ent = readdir(dir)) {
if (!dir)
return 1;
for (ent = readdir(dir); ent; ent = readdir(dir)) {
int n;
/* is 'ent' a device? check that the 'subsystem' link exists and
@ -1814,6 +1817,7 @@ static int print_vmd_attached_devs(struct sys_dev *hba)
free(rp);
}
closedir(dir);
return 0;
}