Simon Horman
2009-May-29 06:57 UTC
[Xen-devel] xend: Fix check for request to detatch non-existent device
This fixes the check for a request to detatch a non-existent device
in pci_device_configure. The previous check was bogus because the
format of AUTO_PHP_SLOT_STR is not the same as that of
x[''vslot''].
However, it works in a slightly non-obvious way, checking taht vslot
hasn''t been altered from its initial value AUTO_PHP_SLOT_STR. To
make this shceme a little clearer, use an empty string as the inital value.
Formting issues asside, neither AUTO_PHP_SLOT_STR nor the empty
string are valid values for x[''vslot'']. In the event
of invalid data (indicating a bug), it should be caught by
self.hvm_destroyPCIDevice.
Cc: Masaki Kanno <kanno.masaki@jp.fujitsu.com>
Signed-off-by: Simon Horman <horms@verge.net.au>
Index: xen-unstable.hg/tools/python/xen/xend/XendDomainInfo.py
==================================================================---
xen-unstable.hg.orig/tools/python/xen/xend/XendDomainInfo.py 2009-04-23
02:53:43.000000000 +1000
+++ xen-unstable.hg/tools/python/xen/xend/XendDomainInfo.py 2009-04-23
02:57:07.000000000 +1000
@@ -809,7 +809,7 @@ class XendDomainInfo:
existing_dev_uuid = sxp.child_value(existing_dev_info,
''uuid'')
existing_pci_conf =
self.info[''devices''][existing_dev_uuid][1]
existing_pci_devs = existing_pci_conf[''devs'']
- vslot = AUTO_PHP_SLOT_STR
+ vslot = ""
for x in existing_pci_devs:
if ( int(x[''domain''], 16) ==
int(dev[''domain''], 16) and
int(x[''bus''], 16) ==
int(dev[''bus''], 16) and
@@ -817,7 +817,7 @@ class XendDomainInfo:
int(x[''func''], 16) ==
int(dev[''func''], 16) ):
vslot = x[''vslot'']
break
- if vslot == AUTO_PHP_SLOT_STR:
+ if vslot == "":
raise VmError("Device %04x:%02x:%02x.%01x is not
connected"
% (int(dev[''domain''],16),
int(dev[''bus''],16),
int(dev[''slot''],16),
int(dev[''func''],16)))
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel