]> xenbits.xensource.com Git - people/royger/xen.git/commitdiff
passthrough: reject self-(de)assignment of devices
authorChao Gao <chao.gao@intel.com>
Wed, 1 Mar 2017 09:28:35 +0000 (10:28 +0100)
committerJan Beulich <jbeulich@suse.com>
Wed, 1 Mar 2017 09:28:35 +0000 (10:28 +0100)
That is to say, don't support a domain assigns a device to itself or detachs
a device from itself.

Signed-off-by: Chao Gao <chao.gao@intel.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
xen/drivers/passthrough/pci.c

index 338d6b4f37105aae13aa44f9af4541d8163ad962..beddd4270161b9b00b792124a770bbafe398939a 100644 (file)
@@ -1603,6 +1603,13 @@ int iommu_do_pci_domctl(
         break;
 
     case XEN_DOMCTL_assign_device:
+        /* Don't support self-assignment of devices. */
+        if ( d == current->domain )
+        {
+            ret = -EINVAL;
+            break;
+        }
+
         ret = -ENODEV;
         if ( domctl->u.assign_device.dev != XEN_DOMCTL_DEV_PCI )
             break;
@@ -1643,6 +1650,13 @@ int iommu_do_pci_domctl(
         break;
 
     case XEN_DOMCTL_deassign_device:
+        /* Don't support self-deassignment of devices. */
+        if ( d == current->domain )
+        {
+            ret = -EINVAL;
+            break;
+        }
+
         ret = -ENODEV;
         if ( domctl->u.assign_device.dev != XEN_DOMCTL_DEV_PCI )
             break;