• Íñigo Huguet's avatar
    net:sfc: fix non-freed irq in legacy irq mode · 8f03eeb6
    Íñigo Huguet authored
    SFC driver can be configured via modparam to work using MSI-X, MSI or
    legacy IRQ interrupts. In the last one, the interrupt was not properly
    released on module remove.
    
    It was not freed because the flag irqs_hooked was not set during
    initialization in the case of using legacy IRQ.
    
    Example of (trimmed) trace during module remove without this fix:
    
    remove_proc_entry: removing non-empty directory 'irq/125', leaking at least '0000:3b:00.1'
    WARNING: CPU: 39 PID: 3658 at fs/proc/generic.c:715 remove_proc_entry+0x15c/0x170
    ...trimmed...
    Call Trace:
     unregister_irq_proc+0xe3/0x100
     free_desc+0x29/0x70
     irq_free_descs+0x47/0x70
     mp_unmap_irq+0x58/0x60
     acpi_unregister_gsi_ioapic+0x2a/0x40
     acpi_pci_irq_disable+0x78/0xb0
     pci_disable_device+0xd1/0x100
     efx_pci_remove+0xa1/0x1e0 [sfc]
     pci_device_remove+0x38/0xa0
     __device_release_driver+0x177/0x230
     driver_detach+0xcb/0x110
     bus_remove_driver+0x58/0xd0
     pci_unregister_driver+0x2a/0xb0
     efx_exit_module+0x24/0xf40 [sfc]
     __do_sys_delete_module.constprop.0+0x171/0x280
     ? exit_to_user_mode_prepare+0x83/0x1d0
     do_syscall_64+0x3d/0x80
     entry_SYSCALL_64_after_hwframe+0x44/0xae
    RIP: 0033:0x7f9f9385800b
    ...trimmed...
    Signed-off-by: default avatarÍñigo Huguet <ihuguet@redhat.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    8f03eeb6
nic.c 16.2 KB