uio: Request/free irq separate from dev lifecycle
authorBrian Russell <brian.russell@brocade.com>
Thu, 19 Mar 2015 17:55:26 +0000 (17:55 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 20 Mar 2015 12:18:16 +0000 (13:18 +0100)
commita087146c72bad795bcab80e5987c5b80fa225000
treec39771b658ac6befec0ab6ca552c6ad533d03ea9
parent03b225b16d75bccf9bc4d82607964a08148adf61
uio: Request/free irq separate from dev lifecycle

Separate irq request/free from the device lifecycle.
After device unregister the parent module can call pci_disable_msi.
>From the PCI MSI how to:

"Before calling this function, a device driver must always call free_irq()
on any interrupt for which it previously called request_irq().
Failure to do so results in a BUG_ON(), leaving the device with
MSI enabled and thus leaking its vector."

So we need to separately free the irq at unregister to allow the device
to be kept around in the case of it still having open FDs.

Signed-off-by: Brian Russell <brussell@brocade.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/uio/uio.c