• Edmund Raile's avatar
    firewire: ohci: prevent leak of left-over IRQ on unbind · 57580166
    Edmund Raile authored
    Commit 5a95f1de ("firewire: ohci: use devres for requested IRQ")
    also removed the call to free_irq() in pci_remove(), leading to a
    leftover irq of devm_request_irq() at pci_disable_msi() in pci_remove()
    when unbinding the driver from the device
    
    remove_proc_entry: removing non-empty directory 'irq/136', leaking at
    least 'firewire_ohci'
    Call Trace:
     ? remove_proc_entry+0x19c/0x1c0
     ? __warn+0x81/0x130
     ? remove_proc_entry+0x19c/0x1c0
     ? report_bug+0x171/0x1a0
     ? console_unlock+0x78/0x120
     ? handle_bug+0x3c/0x80
     ? exc_invalid_op+0x17/0x70
     ? asm_exc_invalid_op+0x1a/0x20
     ? remove_proc_entry+0x19c/0x1c0
     unregister_irq_proc+0xf4/0x120
     free_desc+0x3d/0xe0
     ? kfree+0x29f/0x2f0
     irq_free_descs+0x47/0x70
     msi_domain_free_locked.part.0+0x19d/0x1d0
     msi_domain_free_irqs_all_locked+0x81/0xc0
     pci_free_msi_irqs+0x12/0x40
     pci_disable_msi+0x4c/0x60
     pci_remove+0x9d/0xc0 [firewire_ohci
         01b483699bebf9cb07a3d69df0aa2bee71db1b26]
     pci_device_remove+0x37/0xa0
     device_release_driver_internal+0x19f/0x200
     unbind_store+0xa1/0xb0
    
    remove irq with devm_free_irq() before pci_disable_msi()
    also remove it in fail_msi: of pci_probe() as this would lead to
    an identical leak
    
    Cc: stable@vger.kernel.org
    Fixes: 5a95f1de ("firewire: ohci: use devres for requested IRQ")
    Signed-off-by: default avatarEdmund Raile <edmund.raile@proton.me>
    Link: https://lore.kernel.org/r/20240229144723.13047-2-edmund.raile@proton.meSigned-off-by: default avatarTakashi Sakamoto <o-takashi@sakamocchi.jp>
    57580166
ohci.c 106 KB