• David Miller's avatar
    Fix assertion failure with MSI on sparc64 · b3b7cc7b
    David Miller authored
    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)
    		BUG_ON(irq_has_action(entry->irq));
    
    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
    thing.
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    b3b7cc7b
msi.c 17.8 KB