net/mlx5: Fix teardown errors that happen in pci error handler
[cascardo/linux.git] / drivers / pci / pci-sysfs.c
index 342b691..d319a9c 100644 (file)
@@ -1008,6 +1008,9 @@ static int pci_mmap_resource(struct kobject *kobj, struct bin_attribute *attr,
        if (i >= PCI_ROM_RESOURCE)
                return -ENODEV;
 
+       if (res->flags & IORESOURCE_MEM && iomem_is_exclusive(res->start))
+               return -EINVAL;
+
        if (!pci_mmap_fits(pdev, i, vma, PCI_MMAP_SYSFS)) {
                WARN(1, "process \"%s\" tried to map 0x%08lx bytes at page 0x%08lx on %s BAR %d (start 0x%16Lx, size 0x%16Lx)\n",
                        current->comm, vma->vm_end-vma->vm_start, vma->vm_pgoff,
@@ -1024,10 +1027,6 @@ static int pci_mmap_resource(struct kobject *kobj, struct bin_attribute *attr,
        pci_resource_to_user(pdev, i, res, &start, &end);
        vma->vm_pgoff += start >> PAGE_SHIFT;
        mmap_type = res->flags & IORESOURCE_MEM ? pci_mmap_mem : pci_mmap_io;
-
-       if (res->flags & IORESOURCE_MEM && iomem_is_exclusive(start))
-               return -EINVAL;
-
        return pci_mmap_page_range(pdev, vma, mmap_type, write_combine);
 }