summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorethan.zhao <ethan.zhao@oracle.com>2013-07-26 11:21:24 -0600
committerBjorn Helgaas <bhelgaas@google.com>2013-07-26 11:21:24 -0600
commit07f9b61c3915e8eb156cb4461b3946736356ad02 (patch)
tree386c26d42ce6b8585b5f03e8a8cbc8abbc242f89
parent56039e658cc902fe6e3d1276bb78f7e69768cd35 (diff)
downloadlinux-07f9b61c3915e8eb156cb4461b3946736356ad02.tar.gz
linux-07f9b61c3915e8eb156cb4461b3946736356ad02.tar.bz2
linux-07f9b61c3915e8eb156cb4461b3946736356ad02.zip
x86/PCI: MMCONFIG: Check earlier for MMCONFIG region at address zero
We can check for addr being zero earlier and thus avoid the mutex_unlock() cleanup path. [bhelgaas: drop warning printk] Signed-off-by: ethan.zhao <ethan.zhao@oracle.com> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> Acked-by: Yinghai Lu <yinghai@kernel.org>
-rw-r--r--arch/x86/pci/mmconfig-shared.c7
1 files changed, 1 insertions, 6 deletions
diff --git a/arch/x86/pci/mmconfig-shared.c b/arch/x86/pci/mmconfig-shared.c
index 082e88129712..5596c7bdd327 100644
--- a/arch/x86/pci/mmconfig-shared.c
+++ b/arch/x86/pci/mmconfig-shared.c
@@ -700,7 +700,7 @@ int pci_mmconfig_insert(struct device *dev, u16 seg, u8 start, u8 end,
if (!(pci_probe & PCI_PROBE_MMCONF) || pci_mmcfg_arch_init_failed)
return -ENODEV;
- if (start > end)
+ if (start > end || !addr)
return -EINVAL;
mutex_lock(&pci_mmcfg_lock);
@@ -716,11 +716,6 @@ int pci_mmconfig_insert(struct device *dev, u16 seg, u8 start, u8 end,
return -EEXIST;
}
- if (!addr) {
- mutex_unlock(&pci_mmcfg_lock);
- return -EINVAL;
- }
-
rc = -EBUSY;
cfg = pci_mmconfig_alloc(seg, start, end, addr);
if (cfg == NULL) {