|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 2 of 2] libxl_pci: verify device is assignable before adding to domain
Previously, libxl__device_pci_add only checked the device to be added against
the list of currently assigned devices. This patch changes the behavior to
check that the device to be assigned is in the list of assignable devices,
which only includes those owned by pciback and not assigned to another domain.
Signed-off-by: Doug Magee <djmagee@xxxxxxxxxxxx>
diff -r eb59afed10a6 -r 6a3f270992eb tools/libxl/libxl_pci.c
--- a/tools/libxl/libxl_pci.c Tue Jan 17 12:20:09 2012 -0500
+++ b/tools/libxl/libxl_pci.c Tue Jan 17 12:24:07 2012 -0500
@@ -793,18 +793,15 @@ int libxl__device_pci_add(libxl__gc *gc,
{
libxl_ctx *ctx = libxl__gc_owner(gc);
unsigned int orig_vdev, pfunc_mask;
- libxl_device_pci *assigned;
- int num_assigned, i, rc;
+ libxl_device_pci *assignable;
+ int num_assignable, i, rc;
int stubdomid = 0;
- rc = get_all_assigned_devices(gc, &assigned, &num_assigned);
- if ( rc ) {
- LIBXL__LOG(ctx, LIBXL__LOG_ERROR, "cannot determine if device is
assigned, refusing to continue");
- goto out;
- }
- if ( is_pcidev_in_array(assigned, num_assigned, pcidev->domain,
+ assignable = libxl_device_pci_list_assignable(ctx, &num_assignable);
+
+ if ( !is_pcidev_in_array(assignable, num_assignable, pcidev->domain,
pcidev->bus, pcidev->dev, pcidev->func) ) {
- LIBXL__LOG(ctx, LIBXL__LOG_ERROR, "PCI device already attached to a
domain");
+ LIBXL__LOG(ctx, LIBXL__LOG_ERROR, "PCI device is either assigned to
another domain, or not owned by pciback");
rc = ERROR_FAIL;
goto out;
}
@@ -856,6 +853,9 @@ int libxl__device_pci_add(libxl__gc *gc,
}
out:
+ for ( i = 0; i < num_assignable; i++ )
+ libxl_device_pci_dispose(&assignable[i]);
+ free(assignable);
return rc;
}
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |