diff options
author | Bjorn Helgaas <bhelgaas@google.com> | 2017-04-28 10:34:10 -0500 |
---|---|---|
committer | Bjorn Helgaas <bhelgaas@google.com> | 2017-04-28 10:34:10 -0500 |
commit | 13108c625b1db803b7b24702360a735fd764622f (patch) | |
tree | 68501cbca39ac607d4e6f73629298911b84b696b /kernel/irq/manage.c | |
parent | 0b0ee66c4f4debaaf2f07662ad20a6e89b568c1e (diff) | |
parent | c4e649b09f55595e6df6da5465a5b3cfc93557c1 (diff) | |
download | op-kernel-dev-13108c625b1db803b7b24702360a735fd764622f.zip op-kernel-dev-13108c625b1db803b7b24702360a735fd764622f.tar.gz |
Merge branch 'pci/irq' into next
* pci/irq:
PCI: Disable boot interrupt quirk for ASUS M2N-LR
nvme/pci: Switch to pci_request_irq()
PCI/irq: Add pci_request_irq() and pci_free_irq() helpers
genirq: Return the IRQ name from free_irq()
genirq: Fix indentation in remove_irq()
Diffstat (limited to 'kernel/irq/manage.c')
-rw-r--r-- | kernel/irq/manage.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c index a4afe5c..e688e7e 100644 --- a/kernel/irq/manage.c +++ b/kernel/irq/manage.c @@ -1557,7 +1557,7 @@ void remove_irq(unsigned int irq, struct irqaction *act) struct irq_desc *desc = irq_to_desc(irq); if (desc && !WARN_ON(irq_settings_is_per_cpu_devid(desc))) - __free_irq(irq, act->dev_id); + __free_irq(irq, act->dev_id); } EXPORT_SYMBOL_GPL(remove_irq); @@ -1574,20 +1574,27 @@ EXPORT_SYMBOL_GPL(remove_irq); * have completed. * * This function must not be called from interrupt context. + * + * Returns the devname argument passed to request_irq. */ -void free_irq(unsigned int irq, void *dev_id) +const void *free_irq(unsigned int irq, void *dev_id) { struct irq_desc *desc = irq_to_desc(irq); + struct irqaction *action; + const char *devname; if (!desc || WARN_ON(irq_settings_is_per_cpu_devid(desc))) - return; + return NULL; #ifdef CONFIG_SMP if (WARN_ON(desc->affinity_notify)) desc->affinity_notify = NULL; #endif - kfree(__free_irq(irq, dev_id)); + action = __free_irq(irq, dev_id); + devname = action->name; + kfree(action); + return devname; } EXPORT_SYMBOL(free_irq); |