Commit:     b3b7cc7b4138f4171da5813b5ec2a14835e02482
Parent:     0a3fd051c7036ef71b58863f8e5da7c3dabd9d3f
Author:     David Miller <[EMAIL PROTECTED]>
AuthorDate: Fri May 11 13:26:44 2007 -0700
Committer:  Linus Torvalds <[EMAIL PROTECTED]>
CommitDate: Fri May 11 16:01:18 2007 -0700

    Fix assertion failure with MSI on sparc64
    Today's find is a triggered assertion in msi_free_irqs() when the system
    doesn't support MSI, in which case arch_setup_msi_irqs() always returns
    an error.
    The problem is that when this happens we branch into msi_free_irqs(), to
    which you added the following assertion loop:
        list_for_each_entry(entry, &dev->msi_list, list)
    Well, if arch_setup_msi_irqs() fails, entry->irq will be zero and
    although that's never assigned to any normal devices we use that IRQ
    number for the timer interrupt on sparc64 so this assertion triggers.
    Better to test for zero before doing the irq_has_action() assertion
    Signed-off-by: David S. Miller <[EMAIL PROTECTED]>
    Signed-off-by: Linus Torvalds <[EMAIL PROTECTED]>
 drivers/pci/msi.c |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c
index e6740d1..d9cbd58 100644
--- a/drivers/pci/msi.c
+++ b/drivers/pci/msi.c
@@ -549,8 +549,10 @@ static int msi_free_irqs(struct pci_dev* dev)
        struct msi_desc *entry, *tmp;
-       list_for_each_entry(entry, &dev->msi_list, list)
-               BUG_ON(irq_has_action(entry->irq));
+       list_for_each_entry(entry, &dev->msi_list, list) {
+               if (entry->irq)
+                       BUG_ON(irq_has_action(entry->irq));
+       }
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at

Reply via email to