From a0a53a67c91c698007dcac3e7aba27c999c4f6ed Mon Sep 17 00:00:00 2001 From: Nithin Nayak Sujir Date: Mon, 24 Oct 2011 12:15:15 -0700 Subject: libpciaccess: close mtrr fd on pci_cleanup Since the fd is not closed, calling pci_system_init and pci_system_cleanup more than 1024 times results in "too many files open" error. Signed-off-by: Nithin Nayak Sujir Reviewed-by: Jeremy Huddleston --- src/linux_sysfs.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/linux_sysfs.c b/src/linux_sysfs.c index d5ba66a..09e7138 100644 --- a/src/linux_sysfs.c +++ b/src/linux_sysfs.c @@ -889,8 +889,18 @@ pci_device_linux_sysfs_unmap_legacy(struct pci_device *dev, void *addr, pciaddr_ return munmap(addr, size); } + +static void +pci_system_linux_destroy(void) +{ +#ifdef HAVE_MTRR + if (pci_sys->mtrr_fd != -1) + close(pci_sys->mtrr_fd); +#endif +} + static const struct pci_system_methods linux_sysfs_methods = { - .destroy = NULL, + .destroy = pci_system_linux_destroy, .destroy_device = NULL, .read_rom = pci_device_linux_sysfs_read_rom, .probe = pci_device_linux_sysfs_probe, -- cgit v1.2.3