• Matthew Wilcox's avatar
    x86: Fix interrupt leak due to migration · 0ca4b6b0
    Matthew Wilcox authored
    When we migrate an interrupt from one CPU to another, we set the
    move_in_progress flag and clean up the vectors later once they're not
    being used.  If you're unlucky and call destroy_irq() before the vectors
    become un-used, the move_in_progress flag is never cleared, which causes
    the interrupt to become unusable.
    
    This was discovered by Jesse Brandeburg for whom it manifested as an
    MSI-X device refusing to use MSI-X mode when the driver was unloaded
    and reloaded repeatedly.
    Signed-off-by: default avatarMatthew Wilcox <willy@linux.intel.com>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    0ca4b6b0
io_apic.c 92.8 KB