/* This function must not be called from interrupt context.  */
void free_irq(unsigned int irq, void *dev_id)
/* This function must not be called from interrupt context.  */
void free_irq(unsigned int irq, void *dev_id)
{
	struct irq_desc *desc = irq_to_desc(irq);
	if (!desc)
		return;
	chip_bus_lock(irq, desc);
	kfree(__free_irq(irq, dev_id));
	chip_bus_sync_unlock(irq, desc);
}