x86/PCI: MMCONFIG: reject MMCONFIG apertures at address zero
Since all MMCONFIG regions go through pci_mmconfig_add(), we can test the
address once there. If the caller supplies an address of zero, we never
insert it in the pci_mmcfg_config[] table, so no need to test it elsewhere.
Reviewed-by: Yinghai Lu <yinghai@kernel.org>
Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com>
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
diff --git a/arch/x86/pci/mmconfig-shared.c b/arch/x86/pci/mmconfig-shared.c
index a0cc4d2..067a2cf 100644
--- a/arch/x86/pci/mmconfig-shared.c
+++ b/arch/x86/pci/mmconfig-shared.c
@@ -41,6 +41,9 @@
int new_num = pci_mmcfg_config_num + 1;
int i = pci_mmcfg_config_num;
+ if (addr == 0)
+ return NULL;
+
new = kzalloc(sizeof(pci_mmcfg_config[0]) * new_num, GFP_KERNEL);
if (!new)
return NULL;
@@ -471,8 +474,7 @@
typeof(pci_mmcfg_config[0]) *cfg;
int i;
- if ((pci_mmcfg_config_num == 0) ||
- (pci_mmcfg_config[0].address == 0))
+ if (pci_mmcfg_config_num == 0)
return;
for (i = 0; i < pci_mmcfg_config_num; i++) {
@@ -616,8 +618,7 @@
pci_mmcfg_reject_broken(early);
- if ((pci_mmcfg_config_num == 0) ||
- (pci_mmcfg_config[0].address == 0))
+ if (pci_mmcfg_config_num == 0)
return;
if (pci_mmcfg_arch_init())
@@ -649,8 +650,7 @@
*/
if ((pci_mmcfg_resources_inserted == 1) ||
(pci_probe & PCI_PROBE_MMCONF) == 0 ||
- (pci_mmcfg_config_num == 0) ||
- (pci_mmcfg_config[0].address == 0))
+ (pci_mmcfg_config_num == 0))
return 1;
/*