diff options
Diffstat (limited to 'drivers/pci/search.c')
| -rw-r--r-- | drivers/pci/search.c | 10 | 
1 files changed, 8 insertions, 2 deletions
diff --git a/drivers/pci/search.c b/drivers/pci/search.c index bade14002fd8..2061672954ee 100644 --- a/drivers/pci/search.c +++ b/drivers/pci/search.c @@ -32,6 +32,12 @@ int pci_for_each_dma_alias(struct pci_dev *pdev,  	struct pci_bus *bus;  	int ret; +	/* +	 * The device may have an explicit alias requester ID for DMA where the +	 * requester is on another PCI bus. +	 */ +	pdev = pci_real_dma_dev(pdev); +  	ret = fn(pdev, pci_dev_id(pdev), data);  	if (ret)  		return ret; @@ -41,9 +47,9 @@ int pci_for_each_dma_alias(struct pci_dev *pdev,  	 * DMA, iterate over that too.  	 */  	if (unlikely(pdev->dma_alias_mask)) { -		u8 devfn; +		unsigned int devfn; -		for_each_set_bit(devfn, pdev->dma_alias_mask, U8_MAX) { +		for_each_set_bit(devfn, pdev->dma_alias_mask, MAX_NR_DEVFNS) {  			ret = fn(pdev, PCI_DEVID(pdev->bus->number, devfn),  				 data);  			if (ret)  |