diff options
| author | Bjorn Helgaas <bhelgaas@google.com> | 2025-03-27 13:14:43 -0500 |
|---|---|---|
| committer | Bjorn Helgaas <bhelgaas@google.com> | 2025-03-27 13:14:43 -0500 |
| commit | 67b9f18202353df6d4011cfb73fc939b6f65fd90 (patch) | |
| tree | d3c5d24d8d67c65c606d57bf3c51f3fee5ae9e18 /drivers/pci/pci.c | |
| parent | 4d1a2a9244e28d4b754df30dd0e5327ee504965d (diff) | |
| parent | b1a7f99967fc0c052db8e65b449c7b32b1e9177f (diff) | |
Merge branch 'pci/devres'
- Enlarge the devres table[] to accommodate bridge windows, ROM, IOV BARs,
etc (Philipp Stanner)
- Validate BAR index in devres interfaces (Philipp Stanner)
* pci/devres:
PCI: Check BAR index for validity
PCI: Fix wrong length of devres array
Diffstat (limited to 'drivers/pci/pci.c')
| -rw-r--r-- | drivers/pci/pci.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c index a29f75b8a51c..9c0d99964351 100644 --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c @@ -3929,6 +3929,9 @@ 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 @@ -3973,6 +3976,9 @@ EXPORT_SYMBOL(pci_release_region); static int __pci_request_region(struct pci_dev *pdev, int bar, const char *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, name); |