Sophie

Sophie

distrib > Scientific%20Linux > 5x > x86_64 > by-pkgid > 340e01248478ba8b78a6d4d1809b1eff > files > 619

kvm-83-270.el5_11.src.rpm

From d165a9c032a1ece85190a3583c3959ae3f0de14c Mon Sep 17 00:00:00 2001
From: Alex Williamson <alex.williamson@redhat.com>
Date: Wed, 21 Sep 2011 15:24:56 +0200
Subject: [PATCH 2/2] pci-assign: Cleanup file descriptors

RH-Author: Alex Williamson <alex.williamson@redhat.com>
Message-id: <20110921152426.10592.21804.stgit@x201.home>
Patchwork-id: 33088
O-Subject: [RHEL5.8 kvm PATCH] pci-assign: Cleanup file descriptors
Bugzilla: 700281
RH-Acked-by: Kevin Wolf <kwolf@redhat.com>
RH-Acked-by: Amit Shah <amit.shah@redhat.com>
RH-Acked-by: Don Dutile <ddutile@redhat.com>

Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=700281
Brew build: https://brewweb.devel.redhat.com/taskinfo?taskID=3654509
Upstream status: N/A

We're not closing file descriptors, which results in too
many open files after enough hotplug operations.  We actually
have the config fd opened twice, once explicitly and the other
via libpci.  Be sure to close the libpci one via pci_free_dev.

Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
---

 qemu/hw/device-assignment.c |    5 +++++
 1 files changed, 5 insertions(+), 0 deletions(-)

Signed-off-by: Michal Novotny <mignov@gmail.com>
---
 qemu/hw/device-assignment.c |    5 +++++
 1 files changed, 5 insertions(+), 0 deletions(-)

diff --git a/qemu/hw/device-assignment.c b/qemu/hw/device-assignment.c
index 245d011..ab33e75 100644
--- a/qemu/hw/device-assignment.c
+++ b/qemu/hw/device-assignment.c
@@ -574,6 +574,7 @@ static void free_assigned_device(AssignedDevInfo *adev)
                             "Failed to unmap assigned device region: %s\n",
                             strerror(errno));
             }
+            close(pci_region->resource_fd);
         }
 
         if (dev->real_device.config_fd) {
@@ -585,6 +586,10 @@ static void free_assigned_device(AssignedDevInfo *adev)
 #ifdef KVM_CAP_IRQ_ROUTING
         free_dev_irq_entries(dev);
 #endif
+        if (dev->pdev) {
+            pci_free_dev(dev->pdev);
+        }
+
         adev->assigned_dev = dev = NULL;
     }
 
-- 
1.7.4.4