diff --git a/drivers/pci/devres.c b/drivers/pci/devres.c index cd39479de7c7..643f85849ef6 100644 --- a/drivers/pci/devres.c +++ b/drivers/pci/devres.c @@ -577,7 +577,7 @@ static int pcim_add_mapping_to_legacy_table(struct pci_dev *pdev, { void __iomem **legacy_iomap_table; - if (!pci_bar_index_is_valid(bar)) + if (bar >= PCI_STD_NUM_BARS) return -EINVAL; legacy_iomap_table = (void __iomem **)pcim_iomap_table(pdev); @@ -622,7 +622,7 @@ static void pcim_remove_bar_from_legacy_table(struct pci_dev *pdev, int bar) { void __iomem **legacy_iomap_table; - if (!pci_bar_index_is_valid(bar)) + if (bar >= PCI_STD_NUM_BARS) return; legacy_iomap_table = (void __iomem **)pcim_iomap_table(pdev); @@ -655,9 +655,6 @@ void __iomem *pcim_iomap(struct pci_dev *pdev, int bar, unsigned long maxlen) void __iomem *mapping; struct pcim_addr_devres *res; - if (!pci_bar_index_is_valid(bar)) - return NULL; - res = pcim_addr_devres_alloc(pdev); if (!res) return NULL; @@ -725,9 +722,6 @@ void __iomem *pcim_iomap_region(struct pci_dev *pdev, int bar, int ret; struct pcim_addr_devres *res; - if (!pci_bar_index_is_valid(bar)) - return IOMEM_ERR_PTR(-EINVAL); - res = pcim_addr_devres_alloc(pdev); if (!res) return IOMEM_ERR_PTR(-ENOMEM); @@ -828,9 +822,6 @@ static int _pcim_request_region(struct pci_dev *pdev, int bar, const char *name, int ret; struct pcim_addr_devres *res; - if (!pci_bar_index_is_valid(bar)) - return -EINVAL; - res = pcim_addr_devres_alloc(pdev); if (!res) return -ENOMEM; @@ -1052,9 +1043,6 @@ void __iomem *pcim_iomap_range(struct pci_dev *pdev, int bar, void __iomem *mapping; struct pcim_addr_devres *res; - if (!pci_bar_index_is_valid(bar)) - return IOMEM_ERR_PTR(-EINVAL); - res = pcim_addr_devres_alloc(pdev); if (!res) return IOMEM_ERR_PTR(-ENOMEM); diff --git a/drivers/pci/iomap.c b/drivers/pci/iomap.c index fe706ed946df..9fb7cacc15cd 100644 --- a/drivers/pci/iomap.c +++ b/drivers/pci/iomap.c @@ -9,8 +9,6 @@ #include -#include "pci.h" /* for pci_bar_index_is_valid() */ - /** * pci_iomap_range - create a virtual mapping cookie for a PCI BAR * @dev: PCI device that owns the BAR @@ -35,19 +33,12 @@ void __iomem *pci_iomap_range(struct pci_dev *dev, unsigned long offset, unsigned long maxlen) { - resource_size_t start, len; - unsigned long flags; - - if (!pci_bar_index_is_valid(bar)) - return NULL; - - start = pci_resource_start(dev, bar); - len = pci_resource_len(dev, bar); - flags = pci_resource_flags(dev, bar); + resource_size_t start = pci_resource_start(dev, bar); + resource_size_t len = pci_resource_len(dev, bar); + unsigned long flags = pci_resource_flags(dev, bar); if (len <= offset || !start) return NULL; - len -= offset; start += offset; if (maxlen && len > maxlen) @@ -86,20 +77,16 @@ void __iomem *pci_iomap_wc_range(struct pci_dev *dev, unsigned long offset, unsigned long maxlen) { - resource_size_t start, len; - unsigned long flags; + resource_size_t start = pci_resource_start(dev, bar); + resource_size_t len = pci_resource_len(dev, bar); + unsigned long flags = pci_resource_flags(dev, bar); - if (!pci_bar_index_is_valid(bar)) + + if (flags & IORESOURCE_IO) return NULL; - start = pci_resource_start(dev, bar); - len = pci_resource_len(dev, bar); - flags = pci_resource_flags(dev, bar); - if (len <= offset || !start) return NULL; - if (flags & IORESOURCE_IO) - return NULL; len -= offset; start += offset; diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c index d1684bb5cabd..5bd6f1e05281 100644 --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c @@ -3922,9 +3922,6 @@ EXPORT_SYMBOL(pci_enable_atomic_ops_to_root); */ void pci_release_region(struct pci_dev *pdev, int bar) { - if (!pci_bar_index_is_valid(bar)) - return; - /* * This is done for backwards compatibility, because the old PCI devres * API had a mode in which the function became managed if it had been @@ -3970,9 +3967,6 @@ EXPORT_SYMBOL(pci_release_region); static int __pci_request_region(struct pci_dev *pdev, int bar, const char *res_name, int exclusive) { - if (!pci_bar_index_is_valid(bar)) - return -EINVAL; - if (pci_is_managed(pdev)) { if (exclusive == IORESOURCE_EXCLUSIVE) return pcim_request_region_exclusive(pdev, bar, res_name); diff --git a/drivers/pci/pci.h b/drivers/pci/pci.h index f28d5ae7c15f..b888fcb818ed 100644 --- a/drivers/pci/pci.h +++ b/drivers/pci/pci.h @@ -165,22 +165,6 @@ static inline void pci_wakeup_event(struct pci_dev *dev) pm_wakeup_event(&dev->dev, 100); } -/** - * pci_bar_index_is_valid - Check whether a BAR index is within valid range - * @bar: BAR index - * - * Protects against overflowing &struct pci_dev.resource array. - * - * Return: true for valid index, false otherwise. - */ -static inline bool pci_bar_index_is_valid(int bar) -{ - if (bar >= 0 && bar < PCI_NUM_RESOURCES) - return true; - - return false; -} - static inline bool pci_has_subordinate(struct pci_dev *pci_dev) { return !!(pci_dev->subordinate);