diff options
| -rw-r--r-- | drivers/iommu/dmar.c | 8 | 
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/iommu/dmar.c b/drivers/iommu/dmar.c index c7b1461e8d0a..f77dae7ba7d4 100644 --- a/drivers/iommu/dmar.c +++ b/drivers/iommu/dmar.c @@ -28,6 +28,7 @@  #include <linux/slab.h>  #include <linux/iommu.h>  #include <linux/numa.h> +#include <linux/limits.h>  #include <asm/irq_remapping.h>  #include <asm/iommu_table.h> @@ -128,6 +129,13 @@ dmar_alloc_pci_notify_info(struct pci_dev *dev, unsigned long event)  	BUG_ON(dev->is_virtfn); +	/* +	 * Ignore devices that have a domain number higher than what can +	 * be looked up in DMAR, e.g. VMD subdevices with domain 0x10000 +	 */ +	if (pci_domain_nr(dev->bus) > U16_MAX) +		return NULL; +  	/* Only generate path[] for device addition event */  	if (event == BUS_NOTIFY_ADD_DEVICE)  		for (tmp = dev; tmp; tmp = tmp->bus->self)  | 
