Skip to content

Commit 5a4af2c

Browse files
committed
Merge branch 'pci/resource'
- Restructure pci_dev_for_each_resource() to avoid computing the address of an out-of-bounds array element (the bounds check was performed later so the element was never actually *read*, but it's nicer to avoid even computing an out-of-bounds address) (Andy Shevchenko) * pci/resource: PCI: Avoid potential out-of-bounds read in pci_dev_for_each_resource()
2 parents 18c3850 + 3171e46 commit 5a4af2c

File tree

1 file changed

+6
-6
lines changed

1 file changed

+6
-6
lines changed

include/linux/pci.h

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2127,14 +2127,14 @@ int pci_iobar_pfn(struct pci_dev *pdev, int bar, struct vm_area_struct *vma);
21272127
(pci_resource_end((dev), (bar)) ? \
21282128
resource_size(pci_resource_n((dev), (bar))) : 0)
21292129

2130-
#define __pci_dev_for_each_res0(dev, res, ...) \
2131-
for (unsigned int __b = 0; \
2132-
res = pci_resource_n(dev, __b), __b < PCI_NUM_RESOURCES; \
2130+
#define __pci_dev_for_each_res0(dev, res, ...) \
2131+
for (unsigned int __b = 0; \
2132+
__b < PCI_NUM_RESOURCES && (res = pci_resource_n(dev, __b)); \
21332133
__b++)
21342134

2135-
#define __pci_dev_for_each_res1(dev, res, __b) \
2136-
for (__b = 0; \
2137-
res = pci_resource_n(dev, __b), __b < PCI_NUM_RESOURCES; \
2135+
#define __pci_dev_for_each_res1(dev, res, __b) \
2136+
for (__b = 0; \
2137+
__b < PCI_NUM_RESOURCES && (res = pci_resource_n(dev, __b)); \
21382138
__b++)
21392139

21402140
#define pci_dev_for_each_resource(dev, res, ...) \

0 commit comments

Comments
 (0)