[v2 PATCH] libpciaccess: close mtrr fd on pci_cleanup

Nithin Nayak Sujir nsujir at broadcom.com
Mon Oct 24 12:15:15 PDT 2011


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.

v2: Modified the patch to use the destroy hook function instead of
calling close in the common code based on Jeremy Huddleston's comments. It
seemed appropriate to use the destroy hook since other implementations are
doing clean ups here.

Signed-off-by: Nithin Nayak Sujir <nsujir at broadcom.com>
---
 src/linux_sysfs.c |   12 +++++++++++-
 1 files changed, 11 insertions(+), 1 deletions(-)

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 > 0)
+		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,
-- 
1.7.1





More information about the xorg mailing list