xend: pci.py: fix open file descriptor leak

I got the following error:
    $ xm pci-list-assignable-devices
    Error: [Errno 24] Too many open files

Signed-off-by: Kouya Shimura <kouya@jp.fujitsu.com>
This commit is contained in:
Kouya Shimura committed 2011-01-20 16:41:23 +00:00
1 parent 1da4ffed6f
commit c398531ffa
1 file changed
+4
+4
View File
@@ -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
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.