diff options
| -rw-r--r-- | drivers/pci/rebar.c | 3 | ||||
| -rw-r--r-- | include/linux/sizes.h | 1 |
2 files changed, 4 insertions, 0 deletions
diff --git a/drivers/pci/rebar.c b/drivers/pci/rebar.c index 7f6dece19138..ecdebdeb2dff 100644 --- a/drivers/pci/rebar.c +++ b/drivers/pci/rebar.c @@ -139,6 +139,9 @@ bool pci_rebar_size_supported(struct pci_dev *pdev, int bar, int size) { u64 sizes = pci_rebar_get_possible_sizes(pdev, bar); + if (size < 0 || size > ilog2(SZ_128T) - ilog2(PCI_REBAR_MIN_SIZE)) + return false; + return BIT(size) & sizes; } EXPORT_SYMBOL_GPL(pci_rebar_size_supported); diff --git a/include/linux/sizes.h b/include/linux/sizes.h index 49039494076f..f1f1a055b047 100644 --- a/include/linux/sizes.h +++ b/include/linux/sizes.h @@ -67,5 +67,6 @@ #define SZ_16T _AC(0x100000000000, ULL) #define SZ_32T _AC(0x200000000000, ULL) #define SZ_64T _AC(0x400000000000, ULL) +#define SZ_128T _AC(0x800000000000, ULL) #endif /* __LINUX_SIZES_H__ */ |
