OSDN Git Service

libpciaccess: close mtrr fd on pci_cleanup
authorNithin Nayak Sujir <nsujir@broadcom.com>
Mon, 24 Oct 2011 19:15:15 +0000 (12:15 -0700)
committerJeremy Huddleston <jeremyhu@apple.com>
Tue, 25 Oct 2011 05:40:37 +0000 (22:40 -0700)
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 <nsujir@broadcom.com>
Reviewed-by: Jeremy Huddleston <jeremyhu@apple.com>
src/linux_sysfs.c

index d5ba66a..09e7138 100644 (file)
@@ -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,