mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-08-26 18:41:17 +00:00
don't leak a file descriptor on failed pciGetDevice call
* src/pci.c (pciIterDevices): Always close dir handle.
This commit is contained in:
parent
260082321c
commit
8343dcb893
@ -1,3 +1,8 @@
|
||||
Tue Mar 3 12:22:51 +0100 2009 Jim Meyering <meyering@redhat.com>
|
||||
|
||||
don't leak a file descriptor on failed pciGetDevice call
|
||||
* src/pci.c (pciIterDevices): Always close dir handle.
|
||||
|
||||
Tue Mar 3 12:22:51 +0100 2009 Jim Meyering <meyering@redhat.com>
|
||||
|
||||
update .gitignore and .hgignore files
|
||||
|
12
src/pci.c
12
src/pci.c
@ -233,6 +233,7 @@ pciIterDevices(virConnectPtr conn,
|
||||
{
|
||||
DIR *dir;
|
||||
struct dirent *entry;
|
||||
int ret = 0;
|
||||
|
||||
*matched = NULL;
|
||||
|
||||
@ -252,14 +253,17 @@ pciIterDevices(virConnectPtr conn,
|
||||
if (entry->d_name[0] == '.')
|
||||
continue;
|
||||
|
||||
if (sscanf(entry->d_name, "%x:%x:%x.%x", &domain, &bus, &slot, &function) < 4) {
|
||||
if (sscanf(entry->d_name, "%x:%x:%x.%x",
|
||||
&domain, &bus, &slot, &function) < 4) {
|
||||
VIR_WARN("Unusual entry in " PCI_SYSFS "devices: %s", entry->d_name);
|
||||
continue;
|
||||
}
|
||||
|
||||
try = pciGetDevice(conn, domain, bus, slot, function);
|
||||
if (!try)
|
||||
return -1;
|
||||
if (!try) {
|
||||
ret = -1;
|
||||
break;
|
||||
}
|
||||
|
||||
if (predicate(try, dev)) {
|
||||
VIR_DEBUG("%s %s: iter matched on %s", dev->id, dev->name, try->name);
|
||||
@ -269,7 +273,7 @@ pciIterDevices(virConnectPtr conn,
|
||||
pciFreeDevice(conn, try);
|
||||
}
|
||||
closedir(dir);
|
||||
return 0;
|
||||
return ret;
|
||||
}
|
||||
|
||||
static uint8_t
|
||||
|
Loading…
Reference in New Issue
Block a user