genirq: Return the IRQ name from free_irq()
This allows callers to get back at them instead of having to store it in another variable. Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
This commit is contained in:
parent
a7e60e55d7
commit
25ce4be724
|
@ -155,7 +155,7 @@ extern int __must_check
|
|||
request_percpu_irq(unsigned int irq, irq_handler_t handler,
|
||||
const char *devname, void __percpu *percpu_dev_id);
|
||||
|
||||
extern void free_irq(unsigned int, void *);
|
||||
extern const void *free_irq(unsigned int, void *);
|
||||
extern void free_percpu_irq(unsigned int, void __percpu *);
|
||||
|
||||
struct device;
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
Loading…
Reference in New Issue