irq: Track the owner of irq descriptor
authorSebastian Andrzej Siewior <sebastian@breakpoint.cc>
Mon, 11 Jul 2011 10:17:31 +0000 (12:17 +0200)
committerThomas Gleixner <tglx@linutronix.de>
Thu, 28 Jul 2011 09:23:21 +0000 (11:23 +0200)
commitb6873807a7143b7d6d8b06809295e559d07d7deb
tree1187413ab85f1a7b7d5da91bf61ae21601da3855
parentf3637a5f2e2eb391ff5757bc83fb5de8f9726464
irq: Track the owner of irq descriptor

Interrupt descriptors can be allocated from modules. The interrupts
are used by other modules, but we have no refcount on the module which
provides the interrupts and there is no way to establish one on the
device level as the interrupt using module is agnostic to the fact
that the interrupt is provided by a module rather than by some builtin
interrupt controller.

To prevent removal of the interrupt providing module, we can track the
owner of the interrupt descriptor, which also provides the relevant
irq chip functions in the irq descriptor.

request/setup_irq() can now acquire a refcount on the owner module to
prevent unloading. free_irq() drops the refcount.

Signed-off-by: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
Link: http://lkml.kernel.org/r/20110711101731.GA13804@Chamillionaire.breakpoint.cc
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
include/linux/irq.h
include/linux/irqdesc.h
kernel/irq/irqdesc.c
kernel/irq/manage.c