From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kouya Shimura Subject: [PATCH] xend: fix open file descriptor leak Date: Thu, 20 Jan 2011 13:24:12 +0900 Message-ID: <7kbp3cdwy5.fsf@jp.fujitsu.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="q+RS/Fqo98" Content-Transfer-Encoding: 7bit Return-path: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: xen-devel@lists.xensource.com List-Id: xen-devel@lists.xenproject.org --q+RS/Fqo98 Content-Type: text/plain; charset=us-ascii Content-Description: message body text Content-Transfer-Encoding: 7bit I got the following error: $ xm pci-list-assignable-devices Error: [Errno 24] Too many open files Signed-off-by: Kouya Shimura --q+RS/Fqo98 Content-Type: text/x-patch Content-Disposition: inline; filename="xend_fd_leak.patch" Content-Transfer-Encoding: 7bit diff -r d1631540bcc4 tools/python/xen/util/pci.py --- a/tools/python/xen/util/pci.py Tue Jan 18 17:23:24 2011 +0000 +++ b/tools/python/xen/util/pci.py Thu Jan 20 13:08:11 2011 +0900 @@ -922,10 +922,12 @@ class PciDevice: pos = PCI_CAPABILITY_LIST try: + fd = None fd = os.open(path, os.O_RDONLY) os.lseek(fd, PCI_STATUS, 0) status = struct.unpack('H', os.read(fd, 2))[0] if (status & 0x10) == 0: + os.close(fd) # The device doesn't support PCI_STATUS_CAP_LIST return 0 @@ -952,6 +954,8 @@ class PciDevice: os.close(fd) except OSError, (errno, strerr): + if fd is not None: + os.close(fd) raise PciDeviceParseError(('Error when accessing sysfs: %s (%d)' % (strerr, errno))) return pos --q+RS/Fqo98 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel --q+RS/Fqo98--