diff options
Diffstat (limited to 'drivers/pci')
-rw-r--r-- | drivers/pci/msi.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c index 61c46d66c01e..be1df85e5e2d 100644 --- a/drivers/pci/msi.c +++ b/drivers/pci/msi.c | |||
@@ -558,12 +558,12 @@ static int msi_free_irqs(struct pci_dev* dev) | |||
558 | 558 | ||
559 | list_for_each_entry_safe(entry, tmp, &dev->msi_list, list) { | 559 | list_for_each_entry_safe(entry, tmp, &dev->msi_list, list) { |
560 | if (entry->msi_attrib.type == PCI_CAP_ID_MSIX) { | 560 | if (entry->msi_attrib.type == PCI_CAP_ID_MSIX) { |
561 | if (list_is_last(&entry->list, &dev->msi_list)) | ||
562 | iounmap(entry->mask_base); | ||
563 | |||
564 | writel(1, entry->mask_base + entry->msi_attrib.entry_nr | 561 | writel(1, entry->mask_base + entry->msi_attrib.entry_nr |
565 | * PCI_MSIX_ENTRY_SIZE | 562 | * PCI_MSIX_ENTRY_SIZE |
566 | + PCI_MSIX_ENTRY_VECTOR_CTRL_OFFSET); | 563 | + PCI_MSIX_ENTRY_VECTOR_CTRL_OFFSET); |
564 | |||
565 | if (list_is_last(&entry->list, &dev->msi_list)) | ||
566 | iounmap(entry->mask_base); | ||
567 | } | 567 | } |
568 | list_del(&entry->list); | 568 | list_del(&entry->list); |
569 | kfree(entry); | 569 | kfree(entry); |